我已经创建了一个事件处理程序/侦听器,如下所示:
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。
答案 0 :(得分:2)
如果要访问data
属性,则必须在事件处理程序中使用自定义事件类型:
private function appStarted(e:DanielEvent): void {
trace(e.data);
}
答案 1 :(得分:1)
您的事件处理程序是传递给DanielEvent,而不是事件:
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);
}