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 originalpackage
{
import flash.events.Event;
public class MiEvento extends Event
{
public static var PROCESO_INICIADO:String = "proceso_iniciado";
private var valor:int;
public function MiEvento(type:String, valor:int, bubbles:Boolean=false, cancelable:Boolean=false)
{
this.valor = valor;
super(type, bubbles, cancelable);
}
public function getValor():int
{
return valor;
}
}
}
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 originalpackage
{
import flash.events.EventDispatcher;
public class MiClase extends EventDispatcher
{
public function MiClase()
{
}
public function iniciar():void
{
dispatchEvent(new MiEvento(MiEvento.PROCESO_INICIADO, 10));
}
}
}
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 originalvar miClase:MiClase = new MiClase();
miClase.addEventListener(MiEvento.PROCESO_INICIADO, alIniciar);
miClase.iniciar();
function alIniciar(evento:MiEvento):void
{
trace(evento.getValor());
}
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 !