當我添加一個EVENT.ACTIVATE
監聽器到我的項目中,然後alt-tab離開並返回到我的項目時,它會觸發兩次。爲什麼我的EVENT.ACTIVE觸發兩次?
編輯:shaunhusain和我似乎已經找到了問題的原因,雖然沒有解決方案。當運行獨立播放器版本11+時,事件觸發2倍。當在瀏覽器中運行獨立播放器版本<或任何版本時,它會觸發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
上取消暫停遊戲。問題是,當事件觸發兩次時,它將兩次調用非暫停函數,這會產生不必要的後果。
請添加更多關於您正在構建/運行的上下文的信息。我剛剛在FlashBuilder中創建了一個AS3項目,告訴它使用4.6 SDK作爲AIR應用程序運行,並且無法重現,也嘗試了Web 4.5 SDK的應用程序也無法重現,在這兩種情況下,我都可以得到預期的結果。 – shaunhusain
http://www.shaunhusain.com/CheckActiveEventWeb/ http://www.shaunhusain.com/CheckActiveEventWeb/srcview – shaunhusain
確實很奇怪!感謝您的嘗試。我使用Flex 4.6.0的FlashDevelop 4.0.0 Beta R1978。我無法訪問FlashBuilder,但會詢問flashdevelop論壇。與此同時,如果任何人有flashdevelop,如果你可以嘗試重現結果,那將是非常棒的。 – WgFunstorm