2016-06-02 3 views
1

저는 ActionScript 3.0에 상당히 익숙하며 EventListener를 한 번만 만들 수있는 방법을 알고 싶습니다. 지금은 모든 클릭 후 작동하지만 첫 번째 클릭만으로 작동하도록해야합니다. 클릭 후 무대에 클릭이있는 공이 표시됩니다. 나는 하나의 공만이 나타나고 그 후에는 아무 것도하지 않아야하는 지점에 도달해야합니다.Actionscript 3 EventListener

내 코드 :

stage.addEventListener(MouseEvent.CLICK, onClick,false,0,true); 
function onClick(evt:MouseEvent):void { 
    var ball:MovieClip = new Ball(); 
    ball.x = stage.mouseX; 
    ball.y = stage.mouseY; 
    addChildAt(ball,0); 
} 

답변

3

다음과 같이 removeEventListener()를 호출해야합니다

stage.addEventListener(MouseEvent.CLICK, onClick,false,0,true); 
function onClick(evt:MouseEvent):void { 
    stage.removeEventListener(MouseEvent.CLICK, onClick); 
    var ball:MovieClip = new Ball(); 
    ball.x = stage.mouseX; 
    ball.y = stage.mouseY; 
    addChildAt(ball,0); 
} 
3

한 가지 가능한 해결책은의 EventListener를 제거하는 것입니다.

stage.addEventListener(MouseEvent.CLICK, onClick,false,0,true); 
function onClick(evt:MouseEvent):void { 
    stage.removeEventListener(MouseEvent.CLICK, onClick); 
    var ball:MovieClip = new Ball(); 
    ball.x = stage.mouseX; 
    ball.y = stage.mouseY; 
    addChildAt(ball,0); 
} 

또 다른 해결책은 이벤트 리스너가 필요한 경우에 대비하여 간단한 bool 변수입니다.

var clickedOnce:Boolean = false; 
stage.addEventListener(MouseEvent.CLICK, onClick,false,0,true); 
function onClick(evt:MouseEvent):void { 
    if(!clickedOnce){ 
     clickedOnce = true; 
     var ball:MovieClip = new Ball(); 
     ball.x = stage.mouseX; 
     ball.y = stage.mouseY; 
     addChildAt(ball,0); 
    } 
}