Как мне обработать пользовательское событие в ActionScript 3? - PullRequest
0 голосов
/ 28 октября 2010

Я создал обработчик / прослушиватель событий примерно так:

import flash.events.Event;

public class DanielEvent extends Event {

    public var data:*;
    public static const APP_STARTED:String = "APP_STARTED";

    public function DanielEvent(n:String, data:*){
        this.data = data;
        super(n)
    }
}

Прослушивание события с использованием:

addEventListener(DanielEvent.APP_STARTED, appStarted);

Отправка события по:

dispatchEvent(new DanielEvent("APP_STARTED", "test"))

И получение данных по:

private function appStarted(e:Event){
    trace(e.data)
}

Но я получаю ошибку:

Доступ к возможно неопределенным данным свойств через ссылку со статическим типом flash.events:Event.

Ответы [ 2 ]

2 голосов
/ 28 октября 2010

Вы должны использовать свой пользовательский тип события в обработчике событий, если вы хотите получить доступ к свойству data:

private function appStarted(e:DanielEvent): void { 
    trace(e.data);
}
1 голос
/ 28 октября 2010

ваш обработчик событий передан DanielEvent, а не Event:

private function appStarted(e:DanielEvent):void
    {
    trace(e.data);
    }

также. Вы также должны использовать свою константу для отправки вместо передачи строки, как вы делали для слушателя:

dispatchEvent(new DanielEvent(DanielEvent.APP_STARTED, "test"));

и не забудьте переопределить clone (), если вы планируете отправлять это событие более одного раза.

public override function clone():Event
     {
     return new DanielEvent(n, data);
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...