he estado probando un tiempo con eventos personalizados en as3, ya que me urgen para un proyecto. Pero a la hora de comunicar eventos mediante EventDispatcher tengo un problema y es que si creo un evento en una Clase "Class1" y hago un Events.dispatchEvent(new Event( DispatcherEvent.START_EVENT )); lo hace sin problemas. pero si creo otra clase "Class2" y le añado un listener que escuche el evento me da : TypeError: Error #1034: Error de conversión forzada: no se puede convertir flash.events::Event@2950ce99 en DispatcherEvent.
Os dejo los cogidos debajo a ver si me podéis echar una mano .
DispatcherEvent
Código ActionScript :
package{ import flash.events.EventDispatcher; public class DispatcherEvent extends EventDispatcher{ private static var _instancia:DispatcherEvent; public static const START_EVENT:String = "startEvent"; public function DispatcherEvent(s:Singleton){ } public static function getInstancia():DispatcherEvent{ if (_instancia == null) { _instancia = new DispatcherEvent(new Singleton); } return _instancia; } } } class Singleton{ }
Class1
Código ActionScript :
package { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.events.Event; public class Class1 extends MovieClip{ private var Events:DispatcherEvent; public function Class1() { addEventListener(MouseEvent.CLICK,Clicked); Events = DispatcherEvent.getInstancia(); } private function Clicked(e:MouseEvent){ Events.dispatchEvent(new Event( DispatcherEvent.START_EVENT )); } } }
Class2
Código ActionScript :
package { import flash.display.MovieClip; public class Class2 extends MovieClip{ public function Class2() { var Events:DispatcherEvent; Events = DispatcherEvent.getInstancia(); Events.addEventListener(DispatcherEvent.START_EVENT, Conect); } public function Conect(e:DispatcherEvent){ trace("Evento Escuchado"); } } }
Un Saludo.