如果我按如下所示添加事件监听器:
buttons[i][j].addEventListener(Event.ENTER_FRAME, function(e:Event){trace("foo");});

如何删除此EventListener? 我试过这个但是,它似乎没有用。 :S
buttons[i][j].removeEventListener(Event.ENTER_FRAME, function(e:Event){trace("foo");});

提前致谢!
答案 0 :(得分:0)
您可以尝试:
myObject.addEventListener(Event.ENTER_FRAME, function(event:Event):void
{
// event.currentTarget (in this case myObject)
// event.type (in this case Event.ENTER_FRAME)
// arguments.callee (reference to the current function)
event.currentTarget.removeEventListener(event.type, arguments.callee);
trace("foo");
});
答案 1 :(得分:0)
在定义处理事件时调用的函数时,它可以正常工作。 在你的情况下:
buttons[i][j].addEventListener(Event.ENTER_FRAME, myFunction);
function myFunction(e:Event){
trace("foo");
}
然后删除EventListener:
buttons[i][j].removeEventListener(Event.ENTER_FRAME, myFunction);
希望这有帮助。
答案 2 :(得分:0)
根据定义,如果您匿名定义它,则无法删除该侦听器。这就是使用该语法的全部目的。因此,如果你不是那个意思,那么你必须切换到一个已定义的监听器。如果你的意思是那么你必须使用weakReference:
addEventListener(Event.ENTER_FRAME, function(e:Event){trace("foo");}, false, 0, true);
最后一个参数'true'使其变弱并确保当引用的对象不再存在时事件将是gc。
使用匿名侦听器而不将weakRefernce设置为true是一个错误。