6

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

3 Answers 3

5

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

Sign up to request clarification or add additional context in comments.

Comments

4

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

Comments

1

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.