Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Noite, criei um rollover com notícias vindo de um arquivos XML, como abaixo:
<?xml version="1.0" encoding="utf-8"?>
<thumbnails>
<thumbnail filename="thumb1.jpg" label="pic1"
url="[http://www.sitedeexemplo.com/"](http://www.sitedeexemplo.com/)
description="Desc001"
nome="Curso de desenho"
data="25/12/2006"
hora="22 às 23 horas"
tempo="Inicia em 2 dias" />
</thumbnails>
Estou usando uma array pra recuperar os dados desse XML assim:
var pic_xml = new XML();
pic_xml.ignoreWhite = true;
pic_xml.onLoad = function()
{
var nodes:Array = this.firstChild.childNodes;
for(var i=0;i<nodes.length;i++)
{
filename_list.push(nodes[i].attributes.filename);
url_list.push(nodes[i].attributes.url);
description_list.push(nodes[i].attributes.description)
nome_list.push(nodes[i].attributes.nome)
data_list.push(nodes[i].attributes.data)
hora_list.push(nodes[i].attributes.hora)
tempo_list.push(nodes[i].attributes.tempo);
}
}
pic_xml.load("cursospalmas.xml");
Criei um movieclipe chamado tn_group, e dentro dele duplico outro movieclipe chamado tn, que traz as imagens lado a lado, com o código abaixo, tudo certinho até aí, contudo, NÃO consigo trazer junto com essas imagens as outras informações do XML. Podem ver que estou criando o campo text usando AS.
for( ; i < total; i++ )
{
tn_group.tn.duplicateMovieClip("tn"+i, i);
tn_group["tn"+i].preloader._width = 25;
tn_group["tn"+i].tn_button._visible = false;
tn_group["tn"+i].txt = (i+1);
tn_group["tn"+i].tn_no = i;
tn_group["tn"+i]._x = i * distance_x;
tn_group["tn"+i].createTextField("nome_txt",_root.getNextHighestDepth(),50,90,50,20);
tn_group["tn"+i].nome_txt.text = label_list[this._parent.tn_no];
Agradeço se puderem ajudar.
>
tn_group["tn"+i].createTextField("nome_txt",_root.getNextHighestDepth(),50,90,50,20); // não quer dizer nada para o codigo
var nome_txt:TextField = tn_group["tn"+i].createTextField("nome_txt",_root.getNextHighestDepth(),50,90,50,20);// quer dizer algo
tn_group["tn"+i].nome_txt = tn_group["tn"+i].createTextField("nome_txt",_root.getNextHighestDepth(),50,90,50,20);// quer dizer algo
Espero ter ajudado.
Abraços
Não funcionou, na verdade o código abaixo funcionou "criando" o campo "nome" para cada registro do xml carregado (estava testando só nome por enquanto).
tn_group["tn"+i].createTextField("nome_txt",_root.getNextHighestDepth(),50,90,50,20);
no entanto, não consegui levar os dados do xml pra eles. De qualquer forma obrigado.
Bom não sei o que você tentou fazer, mas: nome_list.push(nodes.attributes.nome) <----- aqui você criou uma array chamada nome_list que contem o valores de nome
E aqui: label_list[this._parent.tn_no]; você simplesemente chama um parente que não existe em lugar nenhum....
Que tal se fizer algo:
*tn_group["tn"+i].nome_txt.text = nome_list**;*
Acredito que ai sim vai funcionar.
Caso o flash n esteja conseguindo ver essa array... declare ela fora da função, popule exatamente do jeito que você está fazendo, depois chame como mostrei.
Abraços
>
Bom não sei o que você tentou fazer, mas: nome_list.push(nodes.attributes.nome) <----- aqui você criou uma array chamada nome_list que contem o valores de nome
E aqui: label_list[this._parent.tn_no]; você simplesemente chama um parente que não existe em lugar nenhum....
Que tal se fizer algo:
*tn_group["tn"+i].nome_txt.text = nome_list**;*
Acredito que ai sim vai funcionar.
Caso o flash n esteja conseguindo ver essa array... declare ela fora da função, popule exatamente do jeito que você está fazendo, depois chame como mostrei.
Abraços
*Apenas acrescetando o "tn_group["tn"+i].nome_txt.text = nome_list**;" funcionou perfeitamente. No entanto, não consegui formar a idéia na minha mente ainda do porquê, sempre chego ao mesmo que estava antes, acho que entendi errado algumas sintaxes. Vou tentar fazer outro com três níveis ao invés de dois pra ver se consigo aprender.*
Agradeço pela ajuda Bersek, eu perdi umas várias horas tentando fazer isso funcionar. Estarei a sua disposição se precisar.
Voltei a escrever nesse tópico, pois, agora quando fui criar a versão final vi que ele cria apenas o último textfild. No XML eu estou usando várias informações, como: Nome, data, horário... mas apenas a última aparece. Vi em outros fóruns que usaram apenas +1 no node para corrigir problemas parecidos, mas comigo não deu certo.
Sim, não vai fazer pois a linha do duplicate movie ta errada =)
DuplicateMovieClip se usa das maneiras q eu explico aqui:
http://berseck.wordpress.com/?s=duplicateMovieclip
Tem 3 posts usando o duplicateMovieClip veja como o do botão que é parecido com o que você quer.
Abraços
tn_group["tn"+i].createTextField("nome_txt",_root.getNextHighestDepth(),50,90,50,20); // não quer dizer nada para o codigo
var nome_txt:TextField = tn_group["tn"+i].createTextField("nome_txt",_root.getNextHighestDepth(),50,90,50,20);// quer dizer algo
tn_group["tn"+i].nome_txt = tn_group["tn"+i].createTextField("nome_txt",_root.getNextHighestDepth(),50,90,50,20);// quer dizer algo
Espero ter ajudado.
Abraços