2010-10-28 35 views
0

我创建了一个事件处理函数/侦听器,像这样:如何在ActionScript 3中处理自定义事件?

addEventListener(DanielEvent.APP_STARTED, appStarted); 

通过调度事件:

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

和接收数据

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) 
    } 
} 

使用聆听事件通过:

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

但我得到的错误:

Access of possibly undefined property data through a reference with static type flash.events:Event.

回答

2

你必须在事件处理程序使用您的自定义事件类型,如果你要访问的data属性:

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

啊太棒了!感谢您的帮助! – Daniel 2010-10-28 06:10:31

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); 
    } 
相关问题