Comunidad de diseño web y desarrollo en internet online

Una de eventos

Citar            
MensajeEscrito el 06 Dic 2006 09:36 pm
Como andan gente

Estoy con un pequeño problimita, estoy usando la clase EventDispatcher para manejar eventos, necesito q una clase capture el evento de otra, y a la vez lanze otro evento... a ver... me explico mejor con un poco de codigo

Tengo una primer clase

Código :

import mx.events.EventDispatcher; 

class PruebaEventos
{
   var addEventListener:Function;
   var removeEventListener:Function;
   var dispatchEvent:Function;
      
   function PruebaEventos()
   {
      EventDispatcher.initialize(this); 
   }
   
   function lanzarEvento()
   {
      this.dispatchEvent({type:"hola", param1:"parametro1"}); 
   }
}


y una segunda clase q la controla

Código :

import PruebaEventos;
import mx.events.EventDispatcher; 

class PruebaEventos2
{
   
   var addEventListener:Function;
   var removeEventListener:Function;
   var dispatchEvent:Function;
   
   var a:PruebaEventos;
      
   function PruebaEventos2()
   {
      EventDispatcher.initialize(this); 
      this.a = new PruebaEventos();
      a.addEventListener("hola", this);
      a.lanzarEvento();
   }
   
   function hola(){
      trace("holaaa");
      this.dispatchEvent({type:"hola2", param1:"parametro1"}); 
   }
}


Como pueden ver al capturar el evento esta clase lanza un evento propio.

El codigo as es

Código :

import PruebaEventos2

aa = new Object();
aa.hola2 = function(arg)
{
   trace("holaaaaaaaaaa2222222222");
   trace(arg.param1)
}

p = new PruebaEventos2();

p.addEventListener("hola2", aa);


Funciona bien la caputara del evento "hola" por parte de la clase 2, pero no funciona la captura del evento "hola2" por parte del listener...

¿Alguien me hecha una mano?
Gracias por anticipado.

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 07 Dic 2006 07:13 am
Que tal!!!

El problema es que el evento se lanza en el contructor de la clase PruebaEventos2.

Cuando se declara la instancia de la clase salta el evento hola, pero, dado que aún el hola2 no se encuentra registrado como evento por el event dispatcher, pues no salta. Prueba a modificar la clase "PruebaEventos2" de la manera siguiente:

Código :

import PruebaEventos;
import mx.events.EventDispatcher; 
class PruebaEventos2{      
   var addEventListener:Function;
   var removeEventListener:Function;
   var dispatchEvent:Function;      
   var a:PruebaEventos;         
   
   function PruebaEventos2()   {
      EventDispatcher.initialize(this);
      this.a = new PruebaEventos();
      a.addEventListener("hola", this);
   }
   
   function hola(){
      trace("holaaa");
      this.dispatchEvent({type:"hola2", param1:"parametro1"});
   }
   
   function lanzar() {
      a.lanzarEvento();
   }
}


y ahora el código en la película de la siguiente forma:

Código :

import PruebaEventos2;
aa = new Object();
aa.hola2 = function(arg){
   trace("holaaaaaaaaaa2222222222");
   trace(arg.param1);
}

p = new PruebaEventos2();
p.addEventListener("hola2", aa);

p.lanzar();


Ahora saltan los 2 eventos.

Un saludo

Por Pachi

8 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 07 Dic 2006 01:32 pm
ahhhh q tonto! es verdad :lol:

gracias!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox

 

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