AS3: Как отправить событие из класса actionscript - PullRequest
6 голосов
/ 21 февраля 2010

У меня есть небольшое шахматное приложение, которое состоит из клеток и досок. Когда пользователь перемещает элемент на доску, я хочу, чтобы ячейка доски отправляла событие, чтобы Board мог его прослушать и вызвать слушателя

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 ]

5 голосов
/ 21 февраля 2010

у вас есть 2 варианта:

1) вместо this.addEventListener ("newMove", moveEvent); do BoardCell.addEventListener ("newMove", moveEvent);

2) иметь событие, привязанное к родительскому элементу (предполагая, что BoardCell является дочерним элементом отображения FrontEndBoard, вы устанавливаете его как параметр в конструкторе событий)

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

4 голосов
/ 21 февраля 2010

Я не уверен, насколько точно FrontEndBoard и BoardCell находятся иерархически в вашем приложении, но вам может потребоваться сообщить событию "newMove", что оно может bubble .

var e:Event = new Event("newMove", true);
1 голос
/ 21 февраля 2010

Событие, которое вы отправляете из класса BoardCell, должно пузыриться, поэтому оно перехватывается в любых родительских классах. Проверьте аргументы конструктора класса Event, где вы можете установить флаг "bubbles" в true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...