Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AS3: How to dispatch event from actionscript class

I have small chess application which consists of cells and boards. When user moves an item to the board, I want the board cell to dispatch an event so Board can listen to it and call a listener

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

However, I can't catch the event in parent chess board class (Not sure that I listen for it correctly)

    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();
    }
like image 247
Oleg Tarasenko Avatar asked Feb 21 '10 07:02

Oleg Tarasenko


2 Answers

you have 2 options :

1) instead of this.addEventListener("newMove", moveEvent); do BoardCell.addEventListener("newMove", moveEvent);

2) have the event buble up to the parent ( assuming BoardCell is a display child of FrontEndBoard , you set it as a parameter in the event constructor )

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

like image 81
Eran Avatar answered Nov 01 '22 12:11

Eran


I'm not sure how exactly FrontEndBoard and BoardCell are hierarchically in your application, but you may need to tell the "newMove" event that it can bubble.

var e:Event = new Event("newMove", true);
like image 21
chrissr Avatar answered Nov 01 '22 13:11

chrissr