Comunidad de diseño web y desarrollo en internet online

[Problema] DispatchEvent.

Citar            
MensajeEscrito el 18 Abr 2011 04:05 pm
Hola buenas.

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 :S.

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.

Por HiddenHlF

2 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Abr 2011 04:11 pm
No se si usar un EventDispatcher como Singleton es tan buena idea, complica la arquitectura (el singleton es indispensable para el modelo, pero cada clase puede extender EventDispatcher y hacer sus propios eventos)
De todas formas esta no es tu pregunta. El error es porque estas enviando un Event, no un DispatcherEvent, seria asi:

public function Conect(e:Event)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Abr 2011 04:42 pm
Ufff muchas gracias jaja y yo rompiendome la cabeza pensando en 100 fallos raros xP.
Respecto a lo otro, no lo entendí mucho pero nose.. es que de singleton, comunicación de clases y estas cosas encuentro pocos ejemplos/tutoriales. :S vi uno para comunicar clases en este foro y seguí el método que utilizaron tal cual ya que no encontré mas.. sabes algún tutorial/guia/libro donde expliquen mas detallados estos temas?

Un saludo y gracias de nuevo.

Por HiddenHlF

2 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Abr 2011 04:55 pm
Si usas Flex, hay varios frameworks que puedes seguir ... igual vas bien encaminado.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.