当我EVENT.ACTIVATE
向我的项目添加一个监听器,然后 alt-tab 离开并返回我的项目时,它会触发两次。
编辑: shaunhusain 和我似乎找到了问题的原因,尽管没有解决方案。运行独立播放器版本 11+ 时,事件触发 2x。当运行独立播放器版本 <11 或浏览器中的任何版本时,它会触发 1x。因此,最近版本的 Flash Player 投影仪似乎存在错误。我将确定确切的版本并将其报告给 adobe,看看会发生什么。感谢任何阅读本文并试图提供帮助的人!!
我希望每次改变焦点时它都会触发,我只是不希望每次改变焦点时它都会触发两次。
为什么是这样?难道我做错了什么?防止这种行为的最佳方法是什么?
这似乎是一个常见的问题,但谷歌什么也没找到。
代码:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
stage.addEventListener(Event.ACTIVATE, test);
}
private function test(e:Event):void
{
trace(e.target);
}
}
}
实际结果:
[object Stage]
[object Stage]
期望的结果:
[object Stage]
是否将侦听器添加到舞台或其他任何东西似乎都没有区别,行为是相同的。
EVENT.DEACTIVATE 也会发生同样的事情。其他的,如鼠标向上工作正常。
我的目标是暂停游戏EVENT.DEACTIVATE
并取消暂停EVENT.ACTIVATE
。问题是当事件触发两次时,它会调用 unpause 函数两次,这会产生不必要的后果。