Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/03/2009, 21:58
Avatar de jahepi
jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: Leer XML sin urlLoader.addEventListener

Hola riestra!

En esta parte puedes utilizar la magia de los eventos, la clase InfoWindowTabbedComponent podemos hacer que dispare eventos extendiendo de la clase EventDispatcher, para esto debemos crear primero nuestro evento:

Código actionscript:
Ver original
  1. package
  2. {
  3.     import flash.events.Event;
  4.  
  5.     class InfoWindowTabbedComponentEvent extends Event
  6.     {
  7.         public static var ON_DATA:String = "onData";
  8.  
  9.         public function InfoWindowTabbedComponentEvent(type:String, bubbles:Boolean = false, cancelable = false) {
  10.             super(type, bubbles, cancelable);
  11.         }
  12.     }
  13. }

Para crear un objeto del tipo evento heredamos de la clase Event que está en el paquete flash.events, definimos constantes dentro de los eventos como ON_DATA para indicar la clase de evento que ha surgido, ON_DATA nos va a avisar cuando se haya recibido satisfactoriamente los datos xml, eres libre de definir las constantes que quieras.

Ahora a la clase InfoWindowTabbedComponent hacemos que herede de la clase EventDipatcher para que esta pueda lanzar eventos:

Código actionscript:
Ver original
  1. package
  2. {
  3.     import flash.events.Event;
  4.  
  5.     class InfoWindowTabbedComponent extends EventDispatcher
  6.     {
  7.         public function InfoWindowTabbedComponent(m:Marker, id_m:int) {  
  8.             getData();
  9.         }
  10.  
  11.         public function getData():void {
  12.              urlLoader.addEventListener("complete",readXml);
  13.         }
  14.  
  15.         public function readXml(event:Event):void {
  16.             //LLamamos al método dispatchEvent para lanzar el evento.            
  17.             dispatchEvent(new InfoWindowTabbedComponentEvent(InfoWindowTabbedComponentEvent.ON_DATA));
  18.             var fotosXML:XML = new XML(event.target.data);
  19.        
  20.         }
  21.     }
  22. }

De esta forma sencilla podemos hacer que nuestra clase sea capaz de diparar eventos, aquí viene implícito un patrón de diseño llamado Observador, te mando una liga por si quieres profundizar más en el tema:
http://es.wikipedia.org/wiki/Observe...e_dise%C3%B1o)


Ahora cuando creamos la instancia, podemos hacer lo siguiente:

Código actionscript:
Ver original
  1. var obj:InfoWindowTabbedComponent = new InfoWindowTabbedComponent(1, 2);
  2. obj.addEventListener(InfoWindowTabbedComponentEvent.ON_DATA, onDataReceived);
  3.  
  4. function onDataReceived(evt:InfoWindowTabbedComponentEvent):void {
  5.     //Podemos crear aquí el segundo objeto InfoWindowTabbedComponent.
  6. }

Como ves a la instancia obj le añadimos un listener para que nos notifique cuando se recibe el xml en la instancia.

Cualquier duda, estamos a la orden.

Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.