2010-02-21 11 views
6

Tengo una pequeña aplicación de ajedrez que consiste en celdas y tableros. Cuando el usuario mueve un elemento a la tabla, quiero la célula bordo para despachar un evento tan Junta puede escuchar y llamar a un oyenteAS3: Cómo enviar el evento desde la clase actionscript

public class BoardCell extends Canvas 
{ 
    public function Sample():void 
    { 
     ....Some code 
     var e:Event = new Event("newMove") 
    dispatchEvent(e); 
    } 
} 

Sin embargo, no puedo coger el evento en los padres de clase tablero de ajedrez (no estoy seguro de que me escuche correctamente)

public class FrontEndBoard extends ChessBoard 
{ 

    private var initialPoition:String; 

    public function FrontEndBoard() 
    { 
     //TODO: implement function 
     this.addEventListener(Event.ADDED_TO_STAGE, addedToStage); 
     this.addEventListener("newMove", moveEvent); 
     super(); 
    } 

Respuesta

5

tiene 2 opciones:

1) en lugar de this.addEventListener ("Newmove", moveEvent); hacer BoardCell.addEventListener ("newMove", moveEvent);

2) tienen el buble evento depende de los padres (suponiendo BoardCell es un niño visualización de FrontEndBoard, lo establece como un parámetro en el constructor del evento)

var e: Evento = nuevo evento ("Newmove" ,cierto) .

1

El evento que envíes desde la clase BoardCell debería burbujear, por lo que está atrapado en cualquier clase principal. Compruebe los argumentos del constructor de la clase Event donde puede establecer el indicador "bubbles" en verdadero.

4

No estoy seguro de cómo FrontEndBoard y BoardCell son jerárquicamente en su aplicación, pero es posible que necesite decirle al evento "newMove" que puede bubble.

var e:Event = new Event("newMove", true); 
Cuestiones relacionadas