在AS3中,如果我添加相同的事件偵聽器的對象,examle重複事件偵聽器的數量?
txtField.addEventlistener(Event.CHANGE, changeCb, false, 0, true);
txtField.addEventlistener(Event.CHANGE, changeCb, false, 0, true);
我需要刪除該偵聽器兩次嗎?
如何獲取對象上的事件偵聽器的列表或數量?
在AS3中,如果我添加相同的事件偵聽器的對象,examle重複事件偵聽器的數量?
txtField.addEventlistener(Event.CHANGE, changeCb, false, 0, true);
txtField.addEventlistener(Event.CHANGE, changeCb, false, 0, true);
我需要刪除該偵聽器兩次嗎?
如何獲取對象上的事件偵聽器的列表或數量?
不,你不需要在這種情況下兩次刪除偵聽。
您需要刪除在兩種情況下多聽衆:
txtField.addEventlistener(Event.CHANGE, changeCb, false, 0, true); txtField.addEventlistener(Event.CHANGE, changeCb2, false, 0, true);
txtField.addEventlistener(Event.CHANGE, changeCb, false, 0, true); txtField.addEventlistener(Event.CHANGE, changeCb, true, 0, true);
所以你只需要刪除以不同方式註冊的事件。
Flex無法獲得事件偵聽器的計數,但您可以使用hasEventListener(type)
來檢查是否具有特定類型事件的事件偵聽器。
但是,由於源代碼(如果提供),您可以使用「Monkey patch」UIComponent或FlexSprite類來添加此功能,如this blog中所述。其實,你甚至不需要這樣做。代碼在示例中提供。很酷。
不,您不需要移除兩次。你只會創建一個註冊。 此外,您正在使用弱引用(通過設置最後一個參數,useWeakReferences爲true)。所以這使得它更容易推理。
文檔中有一節介紹了您將爲同一個偵聽器函數創建兩個偵聽器註冊的情況。
1)是的,2)我認爲你不能。我很想知道這是否可能,但我的理解是確切的數字是「隱藏的」。 – 2009-07-09 23:47:14
好吧,我站好了。對於如何確定有多少聽衆正在「傾聽」,我仍然很好奇(因爲我確定你是)。 – 2009-07-10 01:07:09