Ir para conteúdo

POWERED BY:

Arquivado

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

Gabbay

array me deixando louco!

Recommended Posts

Pessoal,Criei um data grid puxando informações de um XML, até ai eu consegui fuçando no forum e lendo o tutorial do próprio Flash, mas a grande bomba é que com as informações do XML eu preciso gerar uma Array e por mais que eu tente a porcaria não funciona, no inicio eu estava achando q eu era um retardado por não saber criar uma Array, mas depois eu vi q não era culpa minha, deve ter algum truquezinho, deem uma olhada na parte do código q eu fiz original junto com um teste:

System.useCodepage = true;var vetor = new Array();var meuXML:XML = new XML();//meuXML.load("montaXML.php");meuXML.load("lista.xml");meuXML.ignoreWhite = true;texto.text = "";var nome = "";var email = "";var vTudo:Array = new Array();var arrayLista:Array = new Array();meuXML.onLoad = function(){	var i = 0;	while(this.childNodes[0].childNodes[i].childNodes != undefined) {		 nome = this.childNodes[0].childNodes[i].childNodes[0].childNodes;		email = this.childNodes[0].childNodes[i].childNodes[1].childNodes;		texto.text += nome;		vTudo.push({nome:nome,email:email});		arrayLista[i] = email;		trace(i+" >> "+email);		i++;	}	_root.telaDestinatarios.campoLista.dataProvider = vTudo;}trace ("--------------");trace (">>>"+arrayLista.length+"<<<");trace (vTudo.length);var teste:Array = new Array();teste[0] = "ola";teste[1] = "xxx";trace ("TESTE: "+teste.length);
Olha o que sai no trace():

-------------->>>0<<<0TESTE: 20 >> jose@teste1.com1 >> a.pinto@teste2.com2 >> geraldo@teste3.com3 >> rodrigo@teste4.com4 >> bernardo@teste5.com

Vejam que a Array teste funciona bonitinho, mas a array q eu coloquei dentro do while não funciona, retorna como ZERO... lí em algum post da vida que qdo você puxa do XML ele já fica na Array, mas não consigo usar, sendo assim tentei criar um outro array dentro da função.Falando em função será que não está conseguindo pq a array esta dentro da função e qdo se acaba a função logicamente as variaveis e arrays acabam com ela ... hummm... deve ser isso, se for isso mesmo como é que vou resolver isso??? :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma vez o Chan ficou cabreiro quando o while dele não funcionou com xml, ai ele colocou um for e funcionou, até hoje ele xinga muito, pois fritou a cabeça pra descobrir, conseguiu fazer funcionar mas ainda não sabe o mistério que fez o while não funcionar, posta ai o xml que eu tento dar uma olhada aqui do porque que não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma vez o Chan ficou cabreiro quando o while dele não funcionou com xml, ai ele colocou um for e funcionou, até hoje ele xinga muito, pois fritou a cabeça pra descobrir, conseguiu fazer funcionar mas ainda não sabe o mistério que fez o while não funcionar, posta ai o xml que eu tento dar uma olhada aqui do porque que não funciona.

Bom, eu vou testar, embora eu tenha colocado um trace antes de terminar a função e ele acho certinho, acho q o problema mesmo é como sair com essa Array da função, tentei usar um _global, mas obviamente não funcionou. Pelo menos agora sei q a m***** é a função!olha o XML
<?xml version="1.0" encoding="ISO-8859-1" ?><listaEmail>  <item>	<nome>Jose</nome>	<email>jose@teste1.com</email>  </item>  <item>	<nome>Antonio</nome>	<email>a.pinto@teste2.com</email>  </item>  <item>	<nome>Geraldo</nome>	<email>geraldo@teste3.com</email>  </item>  <item>	<nome>Rodrigo</nome>	<email>rodrigo@teste4.com</email>  </item>  <item>	<nome>Bernardo</nome>	<email>bernardo@teste5.com</email>  </item></listaEmail>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acende uma vela e tenta ai:

 

System.useCodepage = true;
var vetor = new Array();
var meuXML:XML = new XML();
//meuXML.load("montaXML.php");
meuXML.load("lista.xml");
meuXML.ignoreWhite = true;
texto.text = "";
var nome = "";
var email = "";
var vTudo:Array = new Array();
var arrayLista:Array = new Array();

meuXML.onLoad = function(){
	var i = 0;
	a = this.childNodes[0].childNodes.length;
	while(a--) {
		nome = this.childNodes[0].childNodes[i].childNodes[0].childNodes;
		email = this.childNodes[0].childNodes[i].childNodes[1].childNodes;
		texto.text += nome;
		vTudo.push({nome:nome,email:email});
		arrayLista[i] = email;
		trace(i+" >> "+email);
		i++;
	}
	_root.telaDestinatarios.campoLista.dataProvider = vTudo;
	trace ("--------------");
	trace (">>>"+arrayLista.length+"<<<");
	trace (vTudo.length);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim funciona pq está dentro da função, mas acontece que eu preciso dessas informações fora da função para poder acessar de outro lugar entendeu? Tipo eu tenho em outra keyframe que precisa ler essa array, estive pensando, tem como ler as informações do datagrid já com as informações do XML? Pq se for possível, que eu acredito ser, eu posso abrir os dados do datagrid e sair usando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como se funcionasse!Se eu dou um trace dentro da function ele mostra mas se eu der um trace fora da function mostra como se não tivesse nada, qdo acaba a function ja era!Me fale uma coisa, o meuXML é um objeto ou não? Teria como acessar esse objeto e ver a array??hahahaha... só rindo desse flash!!Mais alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu só estou me ferrando aqui pra acessar o array bidimencional, mas se por exemplo você colocar assim:

 

vTudo.push(nome,email);

 

e num botão você colocar assim:

 

on(release){

trace(_root.vTudo[0]);

trace(_root.vTudo[1]);

}

 

ele vai te retornar o valor do nome e email

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carneirinho ... agora q eu me liguei o q aconteceu ... http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

se você ver como retorna no trace, primeiro vem o resultado q está fora da função e depois o q esta na função, logo conclui-se que ele ainda não tinha colocado as informações no array retornando como ZERO, mas agora eu vi a burrada q eu fiz, sabe como é né, muito tempo no PHP q é estático e voltando agora para o Flash perdi um pouco do ritmo, ahhaahahhaa... vlw mano pela força!

 

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.