我尝试实现以下功能,但未能使用以下代码:
当我触发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);
}
提前致谢, 晴天
答案 0 :(得分:1)
使用以下命令修改您的第一个侦听器:
stage.addEventListener(MouseEvent.CLICK, onMouseClickHandler);
事件从你的主类传到舞台上,你在它们之间添加第二个侦听器,所以在函数关闭之后调用它。可以肯定的另一种解决方案是打电话
e.stopImmediatePropagation();
这可以防止任何侦听器捕获相同的事件。