2010-01-05 3 views
4

애니메이션이 중지 될 때까지 onClick 액션을 비활성화해야합니다. 애니메이션은 4 가지 버튼으로 시작할 수 있습니다. 모두 비활성화해야합니다.AS3의 anon 함수에 대한 removeEventListener

가 내가 추가 리스너에서 익명 함수를 사용하는 이유 애니메이션을 시작합니다 함수에 PARAMS를 전달하는 리스너를 사용

up.addEventListener(MouseEvent.CLICK, 
    function(event:MouseEvent):void 
    { 
     revealSpinner(event,51.42,1,spinner); 
     event.currentTarget.removeEventListener(event.type, arguments.callee); 
    }, 
    false, 0, true); 

또한 리스너를 제거 호출 자체를 가지고 있지만, 정말 다른 3 개의 버튼에서 리스너를 제거해야합니다.

는 또한 익명 함수의 이름을 지정 시도했지만 그 작동하지 않았다 :

up.addEventListener(MouseEvent.CLICK, 
    myFunc = function(event:MouseEvent):void 
    { 
     revealSpinner(event,51.42,1,spinner); 
    }, 
    false, 0, true); 

// somewhere else in my app 
up.removeEventListener(MouseEvent.CLICK, myFunc); 

편집 : 4 개 각 버튼은 revealSpinner() 메소드 revealSpinner (이벤트에 다른 매개 변수를 전달할 수있다, 51.42,1, 스피너); revealSpinner (이벤트, 51.42, -1, 회 전자); revealSpinner (이벤트, 120,1, anotherMC); revealSpinner (이벤트, 120, -1, anotherMC);

답변

0

익명 기능을 사용하지 마십시오. 각 버튼에 대한 핸들러를 정의하는 경우 당신은 여전히 ​​사용자 정의 매개 변수를 전달할 수 있습니다,하지만 당신은 언제든지 제거 할 수있는 제대로 정의 리스너해야합니다 :

up.addEventListener(MouseEvent.CLICK, upButtonHandler, false, 0, true); 

function upButtonHandler(event:MouseEvent):void 
{ 
    revealSpinner(event,51.42,1,spinner); 
    up.removeEventListener(MouseEvent.CLICK, upButtonHandler); 
} 


down.addEventListener(MouseEvent.CLICK, downButtonHandler, false, 0, true); 

function downButtonHandler(event:MouseEvent):void 
{ 
    revealSpinner(event,999.999,999,spinner); 
    down.removeEventListener(MouseEvent.CLICK, downButtonHandler); 
} 
1

당신은 당신으로 event.currentTarget 매개 변수를 사용할 수 있습니다 이미 보여졌지만 콜백 함수에있다. 함수를 호출 한 방법에 따라 switch 문을 사용하여 매개 변수를 설정하면됩니다.

function setupButtons() 
{ 
    ... 
    this.up.addEventListener(MouseEvent.CLICK, cbButtonClick, false, 0, true); 
    this.down.addEventListener(MouseEvent.CLICK, cbButtonClick, false, 0, true); 
} 

function cbButtonClick(event:MouseEvent):void 
{ 
    switch(event.currentTarget) 
    { 
     case this.up: 
      revealSpinner(event,51.42,1,spinner); 
      break; 
     case this.down: 
      revealSpinner(event,999999,1,spinner); 
      break; 
    } 

    event.currentTarget.removeEventListener(event.type, cbButtonClick); 
}