2016-06-02 11 views
1

私はかなりActionScript3を新しくしました。私はEventListenerを一度しか動作させない方法を知りたいと思います。今すぐクリックするたびに動作しますが、最初のクリックでのみ動作させる必要があります。 クリックすると、クリックが行われたステージにボールが表示されます。私は1つのボールだけが現れ、そのクリックの後に何もしないようにする必要があります。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

一つの可能​​な解決策は、イベントリスナーを削除することです。

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

もう1つの解決策は、イベントリスナーが必要な場合に備えて、単純なブール変数です。

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