我在第一个函数中添加了一个eventListener,希望在第二个函数中删除它。删除eventListener似乎不起作用,因此每次对第一个函数的后续调用都会添加更多事件处理程序。我知道解决这个问题的一种方法是不在函数中添加eventListener,但这样做会为我的其余代码节省大量的工作。有什么想法吗?
function errorBoxHandler(event:Event):void
{
this.errorBox.errorOkBtn.addEventListener(
MouseEvent.MOUSE_DOWN,
function(event:MouseEvent)
{
errorBoxOkHandler(event, btnSelected, listIndexNum)
}
);
}
function errorBoxOkHandler(event:MouseEvent, btnSelected:String, listIndexNum:int):void
{
this.errorBox.errorOkBtn.removeEventListener(MouseEvent.MOUSE_DOWN, errorBoxOkHandler);
}
答案 0 :(得分:0)
这是因为您要将匿名函数添加为侦听器
this.errorBox.errorOkBtn.addEventListener(MouseEvent.MOUSE_DOWN,
function(event:MouseEvent){//here
errorBoxOkHandler(event, btnSelected,listIndexNum)
});
直接添加errorBoxOkHandler
作为侦听器:
this.errorBox.errorOkBtn.addEventListener(MouseEvent.MOUSE_DOWN, errorBoxOkHandler);
将使用
删除它this.errorBox.errorOkBtn.removeEventListener(MouseEvent.MOUSE_DOWN,errorBoxOkHandler);
调用
您必须找到一种方法,使btnSelected
和listIndexNum
可以从errorBoxOkHandler
看到,因为作为事件监听器,它只能接受一个参数