我在第一个功能中添加了一个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);
}
发生了,因为您正在添加匿名函数作为侦听器
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
可见的方法,因为作为事件侦听器,它只能接受一个参数