[問題] 移除函式內監聽器的問題
大家好,最近在做監聽管理的時候,遇到了一個問題。概要如下
private function testListener(create:Boolean):void
{
//temp is a Container
if (create)
{
temp.addEventListener('testEvent',test_listener);
}
else
{
temp.removeEventListener('testEvent',test_listener);
}
function test_listener(event:Event):void
{
trace('Hello');
}
}
這樣的一個method 簡單處理事件的監聽與移除
然而看完可能就有大大發現了,這個監聽是不會被移除掉的!
我有google了一下大概原因,
主要應該是test_listener這個method在我監聽和移除時,flash對應的記憶體位置是不同
所以無法正確移除,最簡單的處理方式,可以將test_listener移至testListener外部
private function test_listener(event:Event):void
{
trace('Hello');
}
如此可正常移除,但是這種method除了testListener需要之外,根本沒有用途。
想請問各位這種情形,有何方法可以處理函式中的監聽器,或是有其他觀念上的選擇?
謝謝大家~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.248.193
※ 編輯: hurst05 來自: 59.120.248.193 (12/11 11:05)
→
12/11 15:32, , 1F
12/11 15:32, 1F
→
12/11 15:32, , 2F
12/11 15:32, 2F
→
12/11 15:33, , 3F
12/11 15:33, 3F
→
12/11 15:34, , 4F
12/11 15:34, 4F
→
12/11 15:34, , 5F
12/11 15:34, 5F
→
12/11 15:35, , 6F
12/11 15:35, 6F
→
12/11 15:35, , 7F
12/11 15:35, 7F
→
12/11 15:36, , 8F
12/11 15:36, 8F
→
12/12 09:27, , 9F
12/12 09:27, 9F
Flash 近期熱門文章
PTT數位生活區 即時熱門文章