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 0Si 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.