Ir para conteúdo

POWERED BY:

Arquivado

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

Leonardo Machado Moreira

XML.onLoad é atrasado

Recommended Posts

Fala pessol tenho este código aqui

 

function TrataArrays(){
	var i : Number = 0;
	
	for(i = 0; i < arLinhas.length; i++){
		var sLinhas : String = arLinhas[i];
		var arLinhasIndividuais : Array = new Array;
		arLinhasIndividuais = sLinhas.split(",");
		
		var j : Number = 0;
		for(j = 0; j < arLinhasIndividuais.length; j++)
		{
			var XMLLinha : XML = new XML();
			XMLLinha.ignoreWhite = true;
			XMLLinha.onLoad = function (){
				 	var NoLinha : XMLNode = XMLLinha.childNodes[0];
					var nLinhas : Number = 0;
					arMAPA[nLinhas] = linha(NoLinha);
					nLinhas++;	
			}
			XMLLinha.load(sDiretorio+"Linha "+arLinhasIndividuais[j]+".xml");
		}
	}
				 gotoAndPlay(2);
}

onde arLinhas[] tem valores numericos separados por virgula exe.: 1,2,3 .. e cada numero deste tem um arquivo em xml correspondente.

 

até ai tudo bem, eu dou um split nesse 1,2,3 para separar e jogar em um array e depois faço um for neste array para abrir cada xml..

 

Meu problema é que o flash nao esta fazendo o on load, ou melhor , segundo eu vi pelo debug, ele faz atrasado. pois a variavel arMAPA é um array global que recebe o tratamento que linha() da pra cada nó dos vários arquivos... mas o problema é que quando chega em gotoAndPlay, o arMAPA, nao foi nem mexido, nem adicionado nada... ou seja ele chega lá e ainda nao executou nenhum on load,,, mas se eu ponho trace dentro do onload, ele faz,,, porem faz na ordem errada, parece que faz o gotoAndPlay e depois faz o onLoad, alguem sabe se isso é normal??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala pessol tenho este código aqui

 

function TrataArrays(){
	var i : Number = 0;
	
	for(i = 0; i < arLinhas.length; i++){
		var sLinhas : String = arLinhas[i];
		var arLinhasIndividuais : Array = new Array;
		arLinhasIndividuais = sLinhas.split(",");
		
		var j : Number = 0;
		for(j = 0; j < arLinhasIndividuais.length; j++)
		{
			var XMLLinha : XML = new XML();
			XMLLinha.ignoreWhite = true;
			XMLLinha.onLoad = function (){
				 	var NoLinha : XMLNode = XMLLinha.childNodes[0];
					var nLinhas : Number = 0;
					arMAPA[nLinhas] = linha(NoLinha);
					nLinhas++;	
			}
			XMLLinha.load(sDiretorio+"Linha "+arLinhasIndividuais[j]+".xml");
		}
	}
				 gotoAndPlay(2);
}

onde arLinhas[] tem valores numericos separados por virgula exe.: 1,2,3 .. e cada numero deste tem um arquivo em xml correspondente.

 

até ai tudo bem, eu dou um split nesse 1,2,3 para separar e jogar em um array e depois faço um for neste array para abrir cada xml..

 

Meu problema é que o flash nao esta fazendo o on load, ou melhor , segundo eu vi pelo debug, ele faz atrasado. pois a variavel arMAPA é um array global que recebe o tratamento que linha() da pra cada nó dos vários arquivos... mas o problema é que quando chega em gotoAndPlay, o arMAPA, nao foi nem mexido, nem adicionado nada... ou seja ele chega lá e ainda nao executou nenhum on load,,, mas se eu ponho trace dentro do onload, ele faz,,, porem faz na ordem errada, parece que faz o gotoAndPlay e depois faz o onLoad, alguem sabe se isso é normal??

E ai Leonardo,

 

pelo que sei, o onLoad é assíncrono, ou seja, ele faz concomitantemente com a execução do programa. Ainda não sei como resolver isso, já vi resolverem com umas gambiarras do tipo: chamar uma função loadXML, e qdo terminar essa função, você chama o resto do programa.

 

é isso.

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renato Umino fala renato valeu a atenção,,

 

eu resolvi de outro jeito,

 

fiz uma função que conta a quantitade de vezes que ele deveria fazer o on load, e jogo num contador,,

iVezesFazer,,,

 

dentro do onload, eu incremento um outro contador, iVezesFeitas,,

 

se iVezesFazer=iVezesFeitas

gotoAndPlay(2)

 

 

gambiarra, mas ta que ta uma beleza rs

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.