Emitir eventos personalizados en AS3 (II)
Publicado por Iván Gajate el 22 de Noviembre de 2008 en AS3, Flash, Tutoriales | 3 comentarios »
Ya vimos que se pueden emitir eventos personalizados para recogerlos con un listener, no tenemos que limitarnos a los que trae Flash por defecto.
Ahora vamos a dar un paso más. Queremos emitir un evento que diga que se ha terminado una acción, pero además queremos indicar si ha ido bien (true), o ha ido mal (false).
Este es el evento que queremos emitir:
dispatchEvent(new EventExtra("accionTerminada", true));
Creamos un nuevo evento de tipo EventExtra donde le indicamos el nombre del evento que queremos emitir y los parámetros que queramos, que para eso es nuestro evento
Vamos a ver la clase EventExtra:
package { import flash.events.*; // Extiendo la clase Event para que funcione como un evento mas al enviarse y recibirse. public class EventExtra extends Event{ public var exito:Boolean; public function EventExtra(nombre:String, exito:Boolean=true){ // Inicializo el constructor de Event super(nombre); // Guardo el valor de exito en una variable para poder acceder luego a ella. this.exito = exito; } } }
No tiene nada especial, es un envoltorio de la clase Event pero recibe un parámetro extra que almaceno para luego poder acceder a su valor.
Así es como se recogería nuestro evento, con un listener, como siempre en AS3:
// Escucho si objetoEmisor emite el evento "accionTerminada" y le indico su detector de eventos. objetoEmisor.addEventListener("accionTerminada", detectorAccionTerminada) // El detector del evento, recibe un objeto evento de tipo EventExtra function detectorAccionTerminada(evento:EventExtra):void{ // Como tengo una referencia al evento, puedo acceder a sus variables publicas (exito). trace(evento.exito) }
