2010-06-23 59 views
5

定義ActionScript事件處理函數內聯我有一個動作監聽器:我怎麼能在的addEvent監聽

myText.addEventListener(TextEvent.LINK,linkClickHandler); 

因爲根據這一點,我需要寫一個事件處理函數單獨處理文本鏈接事件。

現在,我的要求是我需要寫一個函數在給其name.ie,像

mytext.addEventListenet(TextEvent.LINK, 
       function(event:TextEvent) {....code comes here....}); 

我可以在AS3.What做這樣的同一行isntead將語法此,如果可能。

另外我想知道,我可以傳遞一個額外的參數給事件處理程序,而不是默認參數的事件。

+0

很抱歉的含糊評論,但我曾經讀過,有這個錯誤。任何人都可以驗證嗎? – 2010-06-23 05:49:21

+2

根據具體情況,您必須確保您的動態函數在被調用之前不會被垃圾收集。通常,你最好註冊一些函數。 – Glenn 2010-06-23 05:52:01

+0

我的probelm是我需要傳遞一個參數給事件處理程序,同時聲明它在行動listner.If我能夠做到這一點,我可以在別處也定義處理程序。 – 2010-06-23 05:55:18

回答

4

您的代碼將工作。只需要函數的返回類型。

編輯:一個簡單的委託類:

public class Delegate 
{ 

    public var cb:Function; 
    public var args:Array; 

    public function Delegate(cb:Function, ...args) 
    { 
     this.cb = cb; 
     this.args = args; 
    } 

    public static function create(cb:Function, ...args):Function { 
     var functionProxy:Delegate = new Delegate(cb, args); 
     return functionProxy._create; 
    } 

    public function _create(e:Object=null):void { 
     var params:Array = new Array(); 
     if(e) { 
      params.push(e); 
     } 

     for each (var o:Object in args[0]) { 
      params.push(o); 
     } 
     cb.apply(null, params); 
    } 

} 
+0

我可以傳遞一個額外的參數給函數,同時在動作監聽器中聲明 – 2010-06-23 05:51:29

+2

您需要做一些類似Delegate類的操作:http://www.actionscript.org/resources/articles/205/1/The-Delegate-類/ Page1.html。 – Glenn 2010-06-23 05:55:27

+0

這是一個很好的參考。謝謝哥們。代碼也是內聯工作的。現在我有兩個很好的選擇。酷 – 2010-06-23 05:57:25