ActionScript 3 事件侦听器

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

您需要按如下方式调用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);
}

一种可能的解决方案是删除 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);
    }
}