2012-06-14 111 views
2

EventDispatcher.addEventListener()需要事件類型(String類型的參數)的第一個參數。如何爲所有事件添加一個偵聽器?

但是當前對象可以生成多種類型的事件。

是否有可能在一個處理程序中處理它們?可能我可以通過null作爲類型參數嗎?

+1

不,addEventListener用於將單個處理程序添加到某個類型,您可以針對不同類型多次調用它,併爲其賦予相同的處理程序,但爲什麼要這樣做?你想達到什麼目的? –

+0

我想了解什麼事件生成時。 –

回答

2

你應該儘量讓路周圍和擴展dispatchEvent功能:

public override function dispatchEvent(evt:Event):Boolean { 
    trace(evt.type); 
    return super.dispatchEvent(evt); 
} 

你可以把你的代碼在這裏來處理這個對象調度所有事件。

+0

我認爲這是比其他提議更好的選擇,因爲並非所有的事件都在Event類定義中,所以許多事件都被定義爲Event的子類,這個重寫派生事件的子類或猴子修補您對事件感興趣的對象的版本將很有效。 – shaunhusain

+0

而且它很容易實現。 – turbosqel

2

是的,這是可能的

如果您使用Event類的getQualifiedClassName,則可以使用describeType獲取類型。然後,您知道可以添加的所有類型,假設您將具有公共靜態類型的自定義事件用作相同事件類中的字符串。然後,您可以遍歷所有類型,並將所有類型的偵聽器添加到調度程序。

這個想法包含在我建議使用的templelibraryEventUtils.addAll)中。

查看文檔:http://templelibrary.googlecode.com/svn/trunk/doc/temple/utils/types/EventUtils.html

相關問題