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);
}
啊,太好了!,谢谢你的帮助!啊,太好了!,谢谢你的帮助!