2013-05-30 37 views
0

我需要製作一個事件函數,它具有您傳入的參數,看起來像這樣。具有參數的Flash AS3事件函數

public function foo(e:Event, args) 
    { 
     trace(args[0]); 
    } 


    addEventListener("fooEvent", foo); 
    dispatchEvent(new Event("fooEvent", true), args); 

無論如何,我可以做到這一點?多謝你們。

+2

你會通過繼承事件創建自定義事件並將您的自定義參數添加到該事件對象。這是事件系統設計用於的方式。 :) – 2013-05-30 02:57:44

+4

查看此鏈接獲取更多幫助http://cookbooks.adobe.com/post_AS3__Creating_and_dispatching_Custom_Events-17609.html – 2013-05-30 02:58:23

回答

0

試試這個:

package { 
    import flash.events.Event; 

    public class CustomEvent extends Event { 
    public var params:Object; 

    public function CustomEvent(type:String, paramsObj:Object = null, bubbles:Boolean = true, cancelable:Boolean = true) { 
     super(type, bubbles, cancelable); 

     if (paramsObj) { 
     params = paramsObj; 
     } 
    } 

    public override function clone():Event{ 
     return new CustomEvent(type, params, bubbles, cancelable); 
    } 

    public override function toString():String{ 
     return formatToString("CustomEvent", "params", "type", "bubbles", "cancelable"); 
    } 
    } 
} 

然後,您可以構建類似事件:

dispatchEvent(new CustomEvent("fooEvent", {param1:"foo", param2:"bar"})) 

和檢索的數據等:

addEventListener("fooEvent", function(event:CustomEvent):void { 
    trace("param1: " + event.params.param1); 
    trace("param2: " + event.params.param2); 
});