Comunidad de diseño web y desarrollo en internet online

DispatchEvent en URLLoader

Citar            
MensajeEscrito el 11 Sep 2009 11:05 pm
Hola, estoy haciendo una clase (DataHandler.as) para cargar variables desde un php usando URLLoader (le paso como parámentro la ruta y las variables como URLVariables, ¿como puedo hacer que cuando lleguen los datos (Event.COMPLETE) se dispare un evento que pueda leer desde la clase principal (la que hace el llamado al DataHandler).

La idea es que poder hacer diferentes llamadas a diferentes scripts con diferentes parámetros simplemente usando la clase DataHandler, pero necesito saber quien hizo el llamado para aplicacr las acciones correspondienes.

espero haber sido claro!

Gracias!

Código ActionScript :

package
{
   import flash.display.DisplayObject;
   import flash.events.Event;
   import flash.events.EventDispatcher;
   import flash.net.*;
   
   public class DataHandler
   {
      private var script:URLRequest;
      private var dataLoader:URLLoader = new URLLoader();
      private var variables:URLVariables = new URLVariables();
      private const URL_BASE:String = "php/";
      
      //Contructor de la clase
      function DataHandler(_script:String, _variables:URLVariables)
      {
         script = new URLRequest(URL_BASE + _script);
         variables = _variables;
         
         script.method = URLRequestMethod.POST;
         script.data = variables;
         
         dataLoader.addEventListener(Event.COMPLETE, onLoadedData);
      }
      
      public function send():void
      {
         dataLoader.load(script);
      }
      
      private function onLoadedData(e:Event):void
      {
         trace("here we get the data back: " + dataLoader.data);
      }
   }
}

Por mobiltech

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Sep 2009 11:45 pm
hola , segun el perfomance para los eventos personalizados es crear una clase extendida del EventDispatcher , crear la constante , y hacer eventDispatcher , bueno mas o menos asi :

Código ActionScript :

package {
   
   import flash.events.EventDispatcher;
   //
   
   public class DataHandler extends EventDispatcher {
      
      public static const URL_BASE:String = "php/";
       //
   }
   public function DataHandler() {
      //
   }
   //
   private function onLoadedData(e:Event):void { 
         trace("here we get the data back: " + dataLoader.data); 
       dispatchEvent(new Event(DataHandler.URL_BASE));
      } 
}



y despues hacer un listener desde la clase oyente , asi :

Código ActionScript :

var dataHandler:DataHandler = new DataHandler();
dataHandler.addEventListener(DataHandler.URL_BASE, urlBaseHandler);
 
 function urlBaseHandler(e:Event):void {
   // 
 }

eso es todo espero te sirva, saludos y suerte.

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

firefox
Citar            
MensajeEscrito el 13 Sep 2009 10:29 am
Por hacerlo más sencillo, en la función onLoadedData dispatcha un evento

Código ActionScript :

private function onLoadedData(e:Event):void       {   
       trace("here we get the data back: " + dataLoader.data);    
       dispatchEvent(new Event("ACABO"));    
} 

Claro que queda más elegante usar una constante en lugar de "ACABO". puedes crearte una constante nueva, o simplemente usar el "string" Event.COMPLETE

Código ActionScript :

private function onLoadedData(e:Event):void       {   
       trace("here we get the data back: " + dataLoader.data);    
       dispatchEvent(new Event(Event.COMPLETE));    
} 

Por Eliseo2

710 de clabLevel



 

msie8

 

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