我创建了鼠标点击并同时触发了我的eventListener

时间:2013-06-05 15:19:49

标签: actionscript-3 events

我尝试实现以下功能,但未能使用以下代码:

  1. 单击鼠标一次以显示该框。
  2. 再次点击它以消除该框。
  3. 当我触发mouse.click事件(通过点击)时,触发了“stage.addEventListener(MouseEvent.CLICK,boxGone)”事件监听器。在屏幕上没有任何事情发生,因为我在技术上addChild和removeChild框在同一帧。

    我猜测我的初始点击创建并同时触发了事件监听器。无论如何都要避免这种情况发生而不改变我的触发事件(鼠标点击)?下面是代码:

    public function ClassConstructor(){
     addEventListener(MouseEvent.CLICK, onMouseClickHandler);
    }
    
    private function onMouseClickHandler(e:MouseEvent):void{
    
     box.x = stage.mouseX;
     box.y = stage.mouseY;
     box.gotoAndPlay(1);
    
     stage.addChild(box);
     stage.addEventListener(MouseEvent.CLICK, boxGone);
    
    }
    
    private function boxGone(e:MouseEvent):void{
     stage.removeChild(box);
     stage.removeEventListener(MouseEvent.CLICK, boxGone);
    }
    

    提前致谢, 晴天

1 个答案:

答案 0 :(得分:1)

使用以下命令修改您的第一个侦听器:

stage.addEventListener(MouseEvent.CLICK, onMouseClickHandler);

事件从你的主类传到舞台上,你在它们之间添加第二个侦听器,所以在函数关闭之后调用它。可以肯定的另一种解决方案是打电话

e.stopImmediatePropagation();

这可以防止任何侦听器捕获相同的事件。