AS3:如何从actionscript类调度事件

时间:2010-02-21 07:32:13

标签: flex actionscript-3

我有一个由棋盘和棋盘组成的小型国际象棋应用程序。当用户将项目移动到电路板时,我希望电路板单元发送一个事件,以便电路板可以收听它并呼叫听众

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

3 个答案:

答案 0 :(得分:5)

你有两个选择:

1)而不是this.addEventListener(“newMove”,moveEvent);执行BoardCell.addEventListener(“newMove”,moveEvent);

2)将事件布局到父级(假设BoardCell是FrontEndBoard的显示子级,您将其设置为事件构造函数中的参数)

var e:Event = new Event(“newMove”,true)。

答案 1 :(得分:4)

我不确定FrontEndBoard和BoardCell在您的应用程序中的层次结构,但您可能需要告诉“newMove”事件它可以bubble

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

答案 2 :(得分:1)

从BoardCell类发送的事件应该冒泡,因此它会在任何父类中捕获。检查Event类的构造函数参数,您可以在其中将“bubbles”标志设置为true。