Ir para conteúdo

POWERED BY:

Arquivado

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

krawczuk

Problema em puxar conteúdo do xml com o flash

Recommended Posts

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Fala galera, eu sou novo no forum e começo postando uma dúvida e espero que eu encontre a resposta para ela aqui, a dúvida é o seguinte:

 

" EU tenho um arquivo em XML e outro em flash, eu já consegui duplicar o movie clip que irá abrigar o conteúdo do meu XML, a partir dos nós do XML, só que o conteúdo dos nós do XML não aparece no movie clip, só aparece o movie clip duplicado, com a quantidade dos nós do XML.

 

Abaixo coloquei os códigos contido no arquivo FLA. e o XML.

 

ARQUIVO FLA.:

 

System.useCodepage = true;

var nomeXML:XML = new XML();

nomeXML.load("meuXML.xml");

nomeXML.ignoreWhite = true;

nomeXML.onLoad = function(ok) {

if (ok) {

xmlNode = this.firstChild;

total = xmlNode.childNodes.length;

monta();

} else {

 

mensagem.text = "Erro ao Carregar o arquivo XML";

nome.text = "";

}

};

 

function monta(){

for (var i = 0; i<total; i++){

img.duplicateMovieClip("produto" + i,i);

if (i!= 0){

this["produto" + i]._x = this["produto" + (i-1)]._x + this["produto" + i]._width + 10;

//img.loadMovie(xmlNode.childNodes.childNodes[0].firstChild.nodeValue);

//nome.text = (xmlNode.childNodes.childNodes[1].firstChild.nodeValue);

}

}

};

 

 

 

E ESSE É O DO XML:

 

<?xml version="1.0" encoding="iso-8859-1"?>

<produtos>

<descricao>

<imagem>imagem1.jpg</imagem>

<texto>produtos e marca4</texto>

</descricao>

<descricao>

<imagem>imagem2.jpg</imagem>

<texto>produtosemarca5</texto>

</descricao>

<descricao>

<imagem>imagem3.jpg</imagem>

<texto>produtosemarca6</texto>

</descricao>

<descricao>

<imagem>imagem4.jpg</imagem>

<texto>produtosemarca7</texto>

</descricao>

</produtos>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Supondo que dentro do mc img você tenha um outro mc chamado foto e um campo de texto chamado nome:

 

function monta(){  for (var i = 0; i<total; i++){	var mc_atual = img.duplicateMovieClip("produto" + i,i);	if (i!= 0){	  mc_atual._x = this["produto" + (i-1)]._x + mc_atual._width + 10;	  mc_atual.foto.loadMovie(xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue);	  mc_atual.nome.text = (xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue);	}  }};
Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antonio deu certo, mas a imagem do primeiro nó não aparece. E sem querer abusar, como faço o flash puxar o conteúdo dos nós, que estão dentro de um servidor. Só me diz qual caminho seguir.abr

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deve ser só retirar aquele if estranho que não tirei antes. :P

 

function monta(){  for (var i = 0; i<total; i++){	var mc_atual = img.duplicateMovieClip("produto" + i,i);	mc_atual._x = this["produto" + (i-1)]._x + mc_atual._width + 10;	mc_atual.foto.loadMovie(xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue);	mc_atual.nome.text = (xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue);  }};

E para puxar de um outro lugar é só mudar o caminho do comando load() mesmo. Só que o seu swf tem que estar no mesmo domínio que o xml.

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antonio mais uma vez obrigado, você me salvou, mas estou com um outro problema. Eu quero linkar o conteúdo do movieclip mas não estou conseguindo o código esta assim:

 

System.useCodepage = true;

var nomeXML:XML = new XML();

nomeXML.load("xmlflash2.jsp");

nomeXML.ignoreWhite = true;

nomeXML.onLoad = function(ok) {

if (ok) {

xmlNode = this.firstChild;

total = xmlNode.childNodes.length;

monta();

} else {

 

mensagem.text = "Erro ao Carregar o arquivo XML";

nome.text = "";

}

};

 

function monta(){

for (var i = 0; i<total; i++){

var mc_atual = img.duplicateMovieClip("produto" + i,i);

mc_atual._x = this["produto" + (i-1)]._x + mc_atual._width + 10;

mc_atual.foto.loadMovie(xmlNode.childNodes.childNodes[0].firstChild.nodeValue

);

mc_atual.nome.text = (xmlNode.childNodes.childNodes[1].firstChild.nodeValue);

mc_atual.preco.text = (xmlNode.childNodes.childNodes[2].firstChild.nodeValue);

mc_atual.endereco = this.childNodes.childNodes[3].firstChild;

mc_atual.onPress = function(){

getURL(this.endereco);

}

}

};

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie um botão transparente dentro do mc padrão (o img) e use mc_atual.botao.onRelease = function(){ getURL(_parent.endereco); }

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antonio eu coloquei o código mas quando eu faço o teste ele me retorna como "undefined" na barra de endereço. Desculpas por importunar você é que eu ainda não sei trabalhar com XML no Flash.

 

o código esta assim:

 

function monta(){

for (var i = 0; i<total; i++){

var mc_atual = img.duplicateMovieClip("produto" + i,i);

mc_atual._x = this["produto" + (i-1)]._x + mc_atual._width + 5;

mc_atual.foto.loadMovie(xmlNode.childNodes.childNodes[0].firstChild.nodeValue

);

mc_atual.nome.text = (xmlNode.childNodes.childNodes[1].firstChild.nodeValue);

mc_atual.preco.text = (xmlNode.childNodes.childNodes[2].firstChild.nodeValue);

mc_atual.ende = this.childNodes.childNodes[3].firstChild;

mc_atual.botao.onRelease = function() {

getURL(_parent.endereco);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, esqueci de colocar um this na frente:

 

mc_atual.endereco = this.childNodes[i].childNodes[3].firstChild;mc_atual.botao.onRelease = function() {getURL(this._parent.endereco);}

Abraço

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.