2016-06-25 7 views
0

最初の関数内にeventListenerを追加し、2番目の関数でイベントハンドラを削除したいと考えています。 eventListenerの削除は機能していないようで、最初の関数を呼び出すたびにイベントハンドラが追加されます。これを回避する方法の1つは、関数内に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

あなたはこのようなリスナーとして直接​​を追加するリスナー

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); 

コール

あなたはそれが唯一の引数を受け入れることができますので、イベントリスナーとして​​からbtnSelectedlistIndexNumが見えるようにする方法を見つける必要があります

関連する問題