2016-06-25 2 views
0

첫 번째 함수 내에 eventListener를 추가하고 두 번째 이벤트 핸들러에서 제거하려고합니다. eventListener를 제거해도 작동하지 않는 것 같고 첫 번째 함수를 호출 할 때마다 더 많은 이벤트 핸들러가 추가됩니다. 이 문제를 해결할 수있는 한 가지 방법은 함수 내에 eventListener를 추가하지 않는 것입니다.하지만이 방법을 사용하면 나머지 코드에 대한 많은 작업을 줄일 수 있습니다. 어떤 아이디어?AS3 함수 내에서 이벤트 핸들러 제거

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

이 같은 청취자로서 직접 errorBoxOkHandler 추가 리스너

this.errorBox.errorOkBtn.addEventListener(MouseEvent.MOUSE_DOWN, 
     function(event:MouseEvent){//here 
      errorBoxOkHandler(event, btnSelected,listIndexNum) 
    }); 

으로 익명 함수를 추가하고 있기 때문에 발생합니다

this.errorBox.errorOkBtn.addEventListener(MouseEvent.MOUSE_DOWN, errorBoxOkHandler); 

와 이동식 것
this.errorBox.errorOkBtn.removeEventListener(MouseEvent.MOUSE_DOWN,errorBoxOkHandler); 

전화

당신은 단지 하나 개의 인수를 받아 들일 수 있기 때문에 이벤트 리스너로 errorBoxOkHandler에서 btnSelectedlistIndexNum 볼 수 있도록하는 방법을 찾아야 할 것이다

관련 문제