Tema: evento
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/07/2009, 12:58
Avatar de jahepi
jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 11 meses
Puntos: 43
Respuesta: evento

Hola Jedo !

Creo que estás algo confundido acerca de como funcionan los eventos en Flex.

Puedes crear clases, componentes, módulos, etc..., que tengan la capacidad de lanzar eventos, estos se pueden propagar a lo largo de la aplicación para poder ser capturados y tomar alguna acción en específico.

La clase Event se podría decir que es la mamá de todos los eventos, si quieres definir un evento propio tienes que heredar forzosamente de la clase Event, y lo que estamos lanzando realmente son instancias de esas clases.

Te pongo un pequeño ejemplo, podriamos definir un nuevo evento llamado MiEvento:

Código actionscript:
Ver original
  1. package
  2. {
  3.     import flash.events.Event;
  4.  
  5.     public class MiEvento extends Event
  6.     {
  7.        
  8.         public static var PROCESO_INICIADO:String = "proceso_iniciado";
  9.         private var valor:int;
  10.        
  11.         public function MiEvento(type:String, valor:int, bubbles:Boolean=false, cancelable:Boolean=false)
  12.         {
  13.             this.valor = valor;
  14.             super(type, bubbles, cancelable);
  15.         }
  16.        
  17.         public function getValor():int
  18.         {
  19.             return valor;  
  20.         }
  21.     }
  22. }

En nuestros eventos podemos definir nuevos atributos como valor, y también atributos estáticos para los tipos de evento.

Ahora la clase que lanzará el evento:

Código actionscript:
Ver original
  1. package
  2. {
  3.     import flash.events.EventDispatcher;
  4.  
  5.     public class MiClase extends EventDispatcher
  6.     {
  7.         public function MiClase()
  8.         {
  9.         }
  10.        
  11.         public function iniciar():void
  12.         {
  13.             dispatchEvent(new MiEvento(MiEvento.PROCESO_INICIADO, 10));
  14.         }
  15.     }
  16. }

Para que nuestra clase pueda lanzar eventos tiene que heredar de la clase EventDispatcher, cuando creemos una instancia de MiClase y llamemos a su método iniciar, se llamará al método heredado dispatchEvent y a este le entregamos una instancia de nuestro evento pasándole como parámetros el tipo y en este caso el valor del atributo que definimos en la clase.

Muchas de las clases definidas dentro de Flex como MovieClip ya heredan de la clase EventDispatcher.

Supongamos también si tenemos una clase que ya hereda de otra clase, ya no tendriamos la posibilidad de heredar de la clase EventDispatcher porque as3.0 no soporta la herencia multiple ( Gracias a dios! ), así que en este caso se tendría que hacer uso de las interfaces, implementar la interfaz IEventDispatcher en la clase y implementar cada uno de los métodos definidos en ella.

Más al respecto:
http://livedocs.adobe.com/flex/2/lan...ispatcher.html

Ahora, como hariamos uso de MiClase:

Código actionscript:
Ver original
  1. var miClase:MiClase = new MiClase();
  2. miClase.addEventListener(MiEvento.PROCESO_INICIADO, alIniciar);
  3. miClase.iniciar();
  4.  
  5. function alIniciar(evento:MiEvento):void
  6. {
  7.     trace(evento.getValor());
  8. }


Espero que con esto te quede claro el uso de los eventos, no dudes en preguntar si algo no te ha quedado claro.

Un saludo !
__________________
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.