Actionscript 3 如何处理ActionScript 3中的自定义事件?

Actionscript 3 如何处理ActionScript 3中的自定义事件?,actionscript-3,Actionscript 3,我创建了一个事件处理程序/侦听器,如下所示: 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 = da

我创建了一个事件处理程序/侦听器,如下所示:

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


如果要访问
数据
属性,必须在事件处理程序中使用自定义事件类型:

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

如果要访问
数据
属性,必须在事件处理程序中使用自定义事件类型:

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

向您的事件处理程序传递的是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);
     }

向您的事件处理程序传递的是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);
     }

啊,太好了!,谢谢你的帮助!啊,太好了!,谢谢你的帮助!