Comunidad de diseño web y desarrollo en internet online

Problema con visibilidad de variables

Citar            
MensajeEscrito el 18 Ene 2007 02:40 pm
Tengo el siguiente codigo, y tengo un problema con leer los datos del arreglo


Código :

meses = new Array('ENE', 'FEB', 'MAR', 'ABR', 'MAY', 'JUN', 'JUL', 'AGO', 'SEP', 'OCT', 'NOV', 'DIC');
valores = new Array();

var miObjetoLoadVars:LoadVars = new LoadVars();
miObjetoLoadVars.load("datos.txt");
miObjetoLoadVars.onLoad = function(){   
    for (i=0;i<meses.length;i++){             
     valores.push(eval("miObjetoLoadVars.valor"+i));        
     trace (valores.length)  // ACA LA MUESTRA OK
   }
}
trace (valores.length) // ACA MUESTRA 0



necesito leer el contenido del arreglo y no puedo, alguna idea?
intente definir el arreglo con _global.
pero pasa lo mismo

Por Gmod

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Ene 2007 12:14 pm
Esta bien el codigo, y el supuesto error tiene su justificacion.
Prueba el siguiente codigo

Código :

meses = new Array('ENE', 'FEB', 'MAR', 'ABR', 'MAY', 'JUN', 'JUL', 'AGO', 'SEP', 'OCT', 'NOV', 'DIC');
valores = new Array();

var miObjetoLoadVars:LoadVars = new LoadVars();
miObjetoLoadVars.load("datos.txt");
miObjetoLoadVars.onLoad = function(){   
    for (i=0;i<meses.length;i++){             
     valores.push(eval("miObjetoLoadVars.valor"+i));        
     trace ("ahora no estoy vacio, pues tengo: " + valores.length + " elementos")  // ACA LA MUESTRA OK
   }
}
trace ("Estoy primero vacio con: " + valores.length + " elementos, bien vacio") // ACA MUESTRA 0

Si la logica no me falla en la salida veras lo siguiente:

Estoy primero vacio con: 0 elementos, bien vacio
ahora no estoy vacio, pues tengo: X elementos

¿Como sucede esto? Facil.
Cuando le das a miObjetoLoadVars la orden de que carge algo (.load) esa accion no se ejecuta ni bien la ordenas, lleva un tiempo (ya que hay que ir a buscar un archivo), y flash no espera a que se cumplan este tipo de ordenes, lo que hace es seguir ejecutando las demas acciones mientras se esta cargando el archivo que pediste. La accion que sigue es "trace (valores.length)" y el arreglo valores esta vacio :( por eso te lo muestra vacio. Ahora, luego de que cargo lo que le pediste se dispara el evento onLoad y alli es cuando valores ya tiene algun dato y por eso no te lo muestra vacio.

Espero haberme explicado bien, y que el ejemplo te ilustre.

Por Dientuki

Claber

2021 de clabLevel

11 tutoriales
1 articulo

Genero:Masculino   Héroes

Front-end Ninja

firefox
Citar            
MensajeEscrito el 21 Ene 2007 01:35 pm
recorrer un array es simple

Código :

prueba.multiline = true;
meses = new Array('ENE', 'FEB', 'MAR', 'ABR', 'MAY', 'JUN', 'JUL', 'AGO', 'SEP', 'OCT', 'NOV', 'DIC');
for(i=0;meses[i] != null;i++){
prueba.text += meses[i] + " \n";
}

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.