2010-10-28 64 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); 
    }