Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Denis Ximenes

carregar texto XML

Recommended Posts

Eae galera, uma pequena duvida, desenvolvi esse codigo de acordo com oq estou entendendo de action script ! a funçao era carregar um texto de um xml, quando clica-se em um movie clip. porem quando clico, o texto fica em branco, alguem sabe se estou fazendo errado ? Obrigado.

 

XML --

<?xml version="1.0" encoding="utf-8"?>

<galeria>
<foto>
<diretorio>imgs/foto1.jpg</diretorio>
<legenda>love</legenda>
</foto>
</galeria>

 

 

 

 

ActionScript 3.0 --

mc_frente.addEventListener(MouseEvent.CLICK, vai);

function vai(MouseEvent){
var pegaURL:URLLoader=new URLLoader();
var dadosXML:XML= new XML();
var carrega_img:Loader= new Loader();

pegaURL.load(new URLRequest("dont.xml"));
dadosXML= new XML(pegaURL);
//memory.text= dadosXML.foto.legenda[0];
texto.text= dadosXML.foto.legenda[0];

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentou fazer assim:

mc_frente.addEventListener(MouseEvent.CLICK, vai);

function vai(MouseEvent){
var pegaURL:URLLoader=new URLLoader();
var dadosXML:XML= new XML();
var carrega_img:Loader= new Loader();

pegaURL.load(new URLRequest("dont.xml"));
dadosXML= new XML(pegaURL);
texto.text= dadosXML.foto.legenda;

}

 

Abraços

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui exemplo do que você deveria fazer:

//cria o objeto que carregará
var loader:URLLoader = new URLLoader();

function onComplete(event:Event) {
var xml = new XML(event.target.data);

for(var i = 0; i < xml.foto.length(); i++){
	trace(xml.foto[i].diretorio);
	trace(xml.foto[i].legenda);
}
}


//adiciona a função ao Listener
loader.addEventListener(Event.COMPLETE, onComplete);

//carrega o arquivo xml
loader.load(new URLRequest("myxml.xml"));

 

O que acontece é que você ta tentando puxar informação sem ter carregado o XML ainda.

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui exemplo do que você deveria fazer:

//cria o objeto que carregará
var loader:URLLoader = new URLLoader();

function onComplete(event:Event) {
var xml = new XML(event.target.data);

for(var i = 0; i < xml.foto.length(); i++){
	trace(xml.foto[i].diretorio);
	trace(xml.foto[i].legenda);
}
}


//adiciona a função ao Listener
loader.addEventListener(Event.COMPLETE, onComplete);

//carrega o arquivo xml
loader.load(new URLRequest("myxml.xml"));

 

O que acontece é que você ta tentando puxar informação sem ter carregado o XML ainda.

 

 

Abraços

 

hey man, Obrigado pela ajuda, mas precisso carregar o texto cada vez que eu clico em um botão ou seja, vou fazer um i++ cada vez que o botao for precionado ! assim trocando os valores do xml !

Do jeito que voce fez, nao consigo fazer ele executar a função ah cada clique do botao! como poderia fazer isso ?

 

uma pergunta sobre esta linha:

loader.addEventListener(Event.COMPLETE, onComplete);

 

ela esta dizendo que quando terminar de carregar o arquivo no loader vai executar a função onComplete ?

 

e mais uma sobre esta:

var xml = new XML(event.target.data);

 

aqui é a hora que voce faz a variavel xml ler o xml que esta no loader, correto ? como poderia fazer isso para carregar ao click de um botão ? do jeito que tinha feito pensei que seria deste jeito !

 

var carregaXML:URLLoader= new URLLoader();
carregaXML.load(new URLRequest("xml.xml"))
var dadosXML:XML= new XML();
dadosXML= new XML(carregaXML);

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok,

 

Vamos a aula:

 

loader.addEventListener(Event.COMPLETE, onComplete);

 

Adicionei um ouvinte ao loader carregador, que ao terminar de carregar aquilo que você pediu ele vai disparar o evento onComplete.

Assim você terá os dados carregados do que você mandou carregar com o loader dentro da função onComplete.

 

 

var xml = new XML(event.target.data);

 

event é o evento do complete que tem os dados, ou seja é seu objeto, com esse objeto você quer pegar os dados carregados então eu tenho que buscar a data do objeto e para isso faço o target.data.

 

Se você quer carregar a cada click, basta mandar ele carregar o XML como eu fiz... e popular uma array, depois dessa array populada, você só passa o número que ele deve acessar ao apertar o botão.

 

Exemplo:

//cria o objeto que carregará
var loader:URLLoader = new URLLoader();

var fotos:Array = new Array();
var legenda:Array = new Array();

function onComplete(event:Event) {
	var xml = new XML(event.target.data);

	for(var i = 0; i < xml.foto.length(); i++){
	fotos[i] = xml.foto[i].diretorio;
	legenda[i] = xml.foto[i].legenda;
	}
}


//adiciona a função ao Listener
loader.addEventListener(Event.COMPLETE, onComplete);

//carrega o arquivo xml
loader.load(new URLRequest("myxml.xml"));

info1.addEventListener(MouseEvent.CLICK, onClick);

function onClick(event:MouseEvent){
//sua action aqui
trace(event.name);
}

 

Ai o que você tem que fazer é um split ou algo que passe o numero para a array de acordo com o dado que você quer pegar.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.