Jump to content


Photo

De Xml Para Array - Navegação


  • Faça o login para participar
1 reply to this topic

#1 graffdesign

graffdesign

    Turista

  • Usuários
  • 28 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro

Posted 16/05/2006, 13:57

Olá gente Consegui carregar um xml com endereços para imagens e exibir a primeira imagem na boa, só que agora não estou conseguindo intender nem fazer o botãozinho que vai para a próxima imagem e a anterior.

O problema não é o botão, eu sei fazer, o lance é ao clicar ir para o proximo nó do xml.

Sei que usa-se a função meuXml.nextSibling, só que ta dando undefined quando clico para o próximo.

A minha ideia era gravar todos os itens do xml num array, dae dava pra fazer a navegação mais facilmente.

Alguem pode me ajudar a fazer esse navegador?

Se for possível me ajudar a recuperar todos os itens (imagem) do meu xml e gravar num array, fica bem mais facil pra mim, mas eu só to conseguindo gravar o primeiro item, preciso de todos.


segue os codigos:

System.useCodepage = true;
var doc:XML = new XML();
doc.load ("tmpXML.xml");
doc.ignoreWhite=true;
doc.onLoad = function (success)
{
	if(success)
	{
		var node:XMLNode = this.firstChild.firstChild.firstChild;
		for (node; node != null; node=node.nextSibling) 
		{
			/* cria um novo objeto para colocar no array */
			var obj:Object = new Object();
			/* guarda a pergunta dentro dele */
			obj.item = node.attributes.item;
			var arr:Array = new Array();
			/* para cada resposta dentro dele */
			for (var item:XMLNode = node.firstChild; item != null; item=item.nextSibling) 
			{
				/* coloca os atributos dentro de um array */
				arr.push(item);
				mcFoto.loadMovie("../_galerias/_eventos/_GRs/"+arr[0]);	
			}
			  
		}
	}
		
}

XML:

<?xml version="1.0" encoding="UTF-8"?>
<MyDoc>
	  
		 <File>
		   <Imagem id="1"/>
		   <Imagem imagem="foto_evento/foto10g.jpg">foto_evento/foto10g.jpg</Imagem>
		 </File>
	  
		 <File>
		   <Imagem id="2"/>
		   <Imagem imagem="foto_evento/foto11g.jpg">foto_evento/foto11g.jpg</Imagem>
		 </File>
	  
		 <File>
		   <Imagem id="3"/>
		   <Imagem imagem="foto_evento/foto12g.jpg">foto_evento/foto12g.jpg</Imagem>
		 </File>
	  
</MyDoc>

Valeu.

#2 dio3d

dio3d

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Masculino

Posted 01/10/2007, 15:14

Olá. eu fiz algo parecido com isso e funcionou.
[codebox]System.useCodepage = true;// habilita o uso de caracteres especiais
var nomeXML:XML = new XML();// cria uma nova variavel xml
nomeXML.load("modelo03.xml");// carrega o arquivo xml
nomeXML.ignoreWhite = true;// ignora espeços em branco
a = 0;// variavel que sera usada como posição atual

nomeXML.onLoad = function() {// ao carregar o xml...
total = this.childNodes.length;// total é a variável que recebe o número total de nós do XML
img.loadMovie((this.childNodes[0].attributes.imagem),0);// carrega no img0 o link para img que está no nó 0 IMAGEM
nome.text = (nomeXML.childNodes[0].attributes.titulo);
};

proxima.onPress = function() {
img.play();
if (a+1<total) {// testando para verificar se não é a última posição do XMl
a++;// auto-incremento
nome.text = (nomeXML.childNodes[a].attributes.titulo);//campo nome recebe nome do arquivo
img.loadMovie((nomeXML.childNodes[a].attributes.imagem),0);// carrega a imagem

} else {
nome.text = "Essa é a última imagem";//(nomeXML.childNodes[a].attributes.titulo);//campo nome recebe nome do arquivo

}
};

anterior.onPress = function() {
if (a-1>=0) {// testando para verificar se não é a última posição do XMl
a--;// auto-incremento
nome.text = (nomeXML.childNodes[a].attributes.titulo);//campo nome recebe nome do arquivo
img.loadMovie((nomeXML.childNodes[a].attributes.imagem),0);// carrega a imagem

nome.text = "Essa é a primeira imagem";

}
};
[/codebox]

e agora o XML
[codebox]<?xml version="1.0" encoding="iso-8859-1"?>
<item imagem="imagens/img1.jpg" titulo= "Cavaleiro Medieval" />
<item imagem="imagens/img2.jpg" titulo="Dio e André Vianco na Bienal" />
<item imagem="imagens/img3.jpg" titulo="Desenho Cachoeira" />
<item imagem="imagens/img4.jpg" titulo="Desenho Colorizado"/>
<item imagem="imagens/img5.jpg" titulo="São Jorge Estilizado" />[/codebox]

no palco eu tenho os seguintes itens e suas respectivas instancias:

1 MovieClip vazio - instancia: img // irá receber a imagem;
1 botao seta - instancia: anterior // voltar para a imagem anterior
1 botao seta - instancia: proxima // ir para proxima imagem
1 campo de texto dinamico - intancia: nome // recebe o titulo da imagem especificado no XML

Estou testando outras variaçoes do codigo, cmo por exemplo, usando thumbnails para mostrar a proxima imagem e a anterior, e fazendo com que volte para a primeira , quando clicarmos em "proxima" caso seja a ultima imagem.
Seguem os arquivos.

PS.: as ilustrações que eu usei nas imagens possuem direitos autorais, portanto usem somente para testes, não as publiquem.

Abraços
Dio
www.dio3d.cgmax.blog.br :assobio:

Attached Files






0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq