Ir para conteúdo

POWERED BY:

Arquivado

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

Ronaldo Marcos

[Resolvido] Rollover de notícias com XML em AS2

Recommended Posts

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/" 
		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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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.