¿Qué está mal? dispatchEvent en AS3
hola, llevo un rato mirando esto y no lo termino de entender por que no funciona, son dos botones, con el mismo comportamiento excepto cuando haces click, lo he simplificado para que se vea rápido.
Clase principal
package
{
import flash.display.*;
import EventoClick;
public class blabla extends Sprite
{
private var izq:Izq;
private var der:Der;
public function blabla()
{
izq = new Izq();
addChild(izq);
izq.addEventListener("Cambio", Click)
der = new Der();
addChild(der);
der.addEventListener("Cambio", Click)
}
}
private function Click(e:EventoClick):void
{
trace("click >> " + e.target);
}
}
}
Clase Izq
package
{
import flash.display.Sprite;
public class Izq extends Sprite
{
private var evento:EventoFlechas = new EventoFlechas();
public function Izq()
{
evento.añadir(this);
}
}
}
Clase Der
package
{
import flash.display.Sprite;
import EventoFlechas;
public class Der extends Sprite
{
private var evento:EventoFlechas = new EventoFlechas();
public function Der()
{
evento.añadir(this);
}
}
}
Clase EventoClick
package
{
import flash.events.Event;
public class EventoClick extends Event
{
public function EventoClick(nombre:String)
{
super(nombre);
}
}
}
Clase EventoFlecha
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import EventoClick;
public class EventoFlechas extends Sprite
{
private var cual:Sprite;
public function añadir(_cual:Sprite):void
{
cual = new Sprite();
cual = _cual;
cual.buttonMode=true;
cual.addEventListener(MouseEvent.MOUSE_OVER, Over);
cual.addEventListener(MouseEvent.MOUSE_OUT, Out);
cual.addEventListener(MouseEvent.CLICK, Click);
}
private function Over(e:MouseEvent):void
{
trace("1")
}
private function Out(e:MouseEvent):void
{
trace ("2")
}
private function Click(e:MouseEvent):void
{
dispatchEvent(new EventoClick("Cambio"));
}
}
}
Los over y out los hace sin problemas, pero el dispachEvent del click no lo hace, la idea es reutilizar el codigo para los dos botones, y en el click de la clase principal saber cual es el objeto que lo ha llamado y a partir de aqui hacer una cosa u otra. Alguien ve el problema, ahora no lo veo, y no se si es por que ya no veo nada.
Gracias
Ochionet
Ya esta solucionado, algunas veces es mejor darse una vuelta, y seguir después.
el error estaba en :
cual.dispatchEvent(new EventoClick("Cambio"));
Aquí se queda, por si ha alguien le interesa esta forma de trabajar
Saludos,