当我EVENT.ACTIVATE向我的项目添加一个监听器,然后alt-tab离开并回到我的项目时,它会触发两次.
编辑:shaunhusain我似乎找到了问题的原因,虽然没有解决方案.当运行独立播放器版本11+时,事件触发2x.当运行独立播放器版本<11或浏览器中的任何版本时,它会触发1x.因此,最近版本的Flash播放器投影机可能存在错误.我要确定准确的版本并将其报告给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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
实际结果:
[object Stage]
[object Stage]
Run Code Online (Sandbox Code Playgroud)
期望的结果:
[object Stage]
Run Code Online (Sandbox Code Playgroud)
我是否将监听器添加到舞台或其他任何东西似乎没有区别,行为是相同的.
EVENT.DEACTIVATE也会发生同样的事情.其他如鼠标工作正常.
我的目标是暂停游戏EVENT.DEACTIVATE并取消暂停EVENT.ACTIVATE.问题是当事件触发两次时,它会调用两次unause函数,这会产生不必要的后果.