2010-02-21 73 views
6

我有一個由小單元和棋盤組成的小棋類應用程序。當用戶移動的項目向董事會,我希望董事會電池派遣一個事件,因此董事會可以聽它並調用監聽AS3:如何從actionscript類發送事件

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

但是,我不能趕在父母棋盤類事件(不知道,我聽它正確)

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(); 
    } 

回答

5

你有2種選擇:

1),而不是this.addEventListener( 「newMove」,moveEvent);做BoardCell.addEventListener(「newMove」,moveEvent);

2)具有事件佈雷到父(假設BoardCell是FrontEndBoard的顯示孩子,你把它設置爲事件構造函數的參數)

變種E:事件=新的事件(「newMove」 ,真)。

1

您從BoardCell類發出的事件應該冒泡,因此它會被任何父類捕獲。檢查Event類的構造函數參數,您可以在其中將「bubbles」標誌設置爲true。

4

我不確定FrontEndBoard和BoardCell在您的應用程序中的層次結構如何,但您可能需要告訴「newMove」事件它可以使用bubble

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