Comunidad de diseño web y desarrollo en internet online

return value de un eventListener

Citar            
MensajeEscrito el 02 Abr 2014 08:31 pm
Ayuda!, como hago de esto

Código :

      private function createArraysData(_num:uint,_str:String):Array{
         urlLdr = new URLLoader();
         urlReq = new URLRequest();
         //reading data from txt file
         var file:String = "swf/arr_"+_str+".txt";
         urlReq.url=file;
         urlLdr.load(urlReq);
         
         // Aquí quiero regresar un Array
         urlLdr.addEventListener(Event.COMPLETE, decodeJSON);
         var __AndTheArrIs:Array = // lo que regresa decodeJSON
         
         return __AndTheArrIs;
      }
         
      //decoding funtion
      private function decodeJSON(event:Event):Array {
         var loader:URLLoader=URLLoader(event.target);
         var Entities:Array=JSON.decode(loader.data);

         var _arrImgEntitieData:Array = Entities[0].arrImgEntitieData;
         var _arrHugeObj:Array        = Entities[1].arrHugeObj;
         var _arrMatches:Array        = Entities[2].arrMatches;
         
         return new Array(_arrImgEntitieData,_arrHugeObj,_arrMatches); // Esto quiero obtener de Array
      }


La idea es que en la variable __AndTheArrIs pueda = pasar el addEventListener, pero no veo como, no me regresa un array

Por comicSans

Claber

151 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 03 Abr 2014 04:16 pm
El concepto de carga asíncrona tiene que ver con un comando (o conjunto de comandos en el caso de una funcion) que se ejecuta y otro comando (o conjunto de comandos) que se ejecuta cuando lo que se necesitaba cargar se cargó. El callback se ejecuta siempre DESPUES de la carga y no puede regresar nada, pues lo anterior ya se ejecutó, si fuera síncrono entonces si podrías hacerlo.
Simplemente declara el array fuera de la función para que tenga un scope del timeline (si estas usando Flash) y lo rellenas en el callback, ej

Código ActionScript :

var datoAcargar:String
function carga(){
   urlLdr = new URLLoader();
  urlLdr.load(URLRequest("algun.json"));
  urlLdr.addEventListener(Event.COMPLETE, decodeJSON);
}

 private function decodeJSON(event:Event):void{
   //todo el parseo del resultado
   datoAcargar = elStringQueObtuveDelJason
}


Luego datoAcargar se puede usar desde cualquier función que comparta el timeline ... y claro, que se ejecute después del callback

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Abr 2014 07:00 pm
Sip, tienes toda la razón, en el callBack he rellenado un array declarado anticipadamente. Y con esto que me comentas me ayuda a reforzar este procedimiento

Gracias amigo

Por comicSans

Claber

151 de clabLevel



 

mozilla

 

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