AS3: How to dispatch event from actionscript class

12,136

Solution 1

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) .

Solution 2

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

Solution 3

The event you dispatch from the BoardCell class should bubble, so it is caught in any parent classes. Check the constructor arguments of the Event class where you can set the "bubbles" flag to true.

Share:
12,136
Oleg Tarasenko
Author by

Oleg Tarasenko

Updated on June 15, 2022

Comments

  • Oleg Tarasenko
    Oleg Tarasenko about 2 years

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