大家好,最近在做监听管理的时候,遇到了一个问题。概要如下
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需要之外,根本没有用途。
想请问各位这种情形,有何方法可以处理函式中的监听器,或是有其他观念上的选择?
谢谢大家~