2010-06-02 55 views
2

我有一個小問題,我真的不明白,如果我可以在同一個對象(與相同的回調函數),如果這種情況下,我能有一個上使用addEventListener超過一次溢出,或簡單的Flex的問題是如此聰明,不會在同一個堆棧相同的功能ActionScript的3調用的addEventListener不止一次

再次添加了例子:

var t:CServiceObj = _rModel.userGetBoardJoined(); 
t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk); 
t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk); 
t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk); 
+0

我不能得到任何信息 - 我沒有獲得現在正確的編譯器;你爲什麼不使用一個簡單的按鈕嘗試一下,看看是否點擊處理程序被調用一次以上.. – Amarghosh 2010-06-02 13:00:25

回答

1

正如你所說,Flex是「聰明」,即使你訂閱了事件不止一次在同一實例越多,那麼處理器將被調用只有一次(不管你有多少的addEventListener通過)。

+0

你可以張貼到文檔的鏈接支持此?而且順便說一句,這是除非你'useCapture' http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/events/EventDispatcher.html#addEventListener%28%29使用不同的值 – Amarghosh 2010-06-02 13:24:28

1

我想上的按鈕進行快速測試,如果是的addEventListener多次添加到同樣的功能也沒關係 - 它被分派一次。

但是,你可以建立這樣的

t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk); 
t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk2); 

其中onDataOk2與事件參數調用onDataOk。

有趣的注意 不同的測試,我加在MXML標籤上點擊處理程序,並在一次點擊處理程序,都指向相同的功能。當按鈕被點擊時,兩個處理程序都被分派,所以Flex在幕後做了一些事情來適應這個功能。