Wenn ich einen EVENT.ACTIVATE
Listener zu meinem Projekt hinzufüge, und dann Alt-Tab weg und zurück zu meinem Projekt wird es zweimal ausgelöst.Warum wird mein EVENT.ACTIVE zweimal ausgelöst?
bearbeiten: Shaunhusain und ich habe die Ursache des Problems gefunden, obwohl ohne eine Lösung. Wenn der Standalone Player Version 11+ ausgeführt wird, löst das Event 2x aus. Wenn die Standalone-Player-Version < 11 oder eine andere Version im Browser ausgeführt wird, wird 1x ausgelöst. Es scheint also, dass in den letzten Versionen des Flash-Player-Projektors ein Bug vorliegt. Ich werde die genauen Versionen notieren und es Adobe mitteilen und sehen, was passiert. Danke an alle, die das gelesen haben und versucht haben zu helfen !!
Ich möchte es jedes Mal feuern, wenn ich den Fokus ändere, ich will es einfach nicht schießen zweimal jedes Mal, wenn ich den Fokus ändere.
Warum ist das? Mache ich etwas falsch? Was ist der beste Weg, um dieses Verhalten zu verhindern?
Es scheint, als wäre es eine häufige Frage, aber Google hat nichts gefunden.
Code:
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);
}
}
}
Tatsächliches Ergebnis:
[object Stage]
[object Stage]
Wunschergebnis:
[object Stage]
Es scheint nicht, einen Unterschied zu machen, ob ich den Hörer auf die Bühne hinzufügen oder irgendetwas anderes, das Verhalten ist das gleiche.
Das Gleiche passiert auch mit EVENT.DEACTIVATE. Andere wie Maus funktionieren gut.
Mein Ziel ist es, ein Spiel auf EVENT.DEACTIVATE
zu pausieren und es auf EVENT.ACTIVATE
zu pausieren. Das Problem besteht darin, dass wenn das Ereignis zweimal ausgelöst wird, es zweimal die Unpause-Funktion aufruft, was unerwünschte Konsequenzen hat.
Bitte fügen Sie weitere Informationen über den Kontext hinzu, den Sie erstellen/ausführen. Ich habe gerade ein AS3-Projekt in FlashBuilder erstellt, es als eine AIR-Anwendung mit dem 4.6 SDK ausgeführt und kann nicht reproduzieren, auch ein Web versucht Anwendung mit dem 4.5 SDK kann auch nicht reproduzieren, in beiden Fällen bekomme ich das erwartete Ergebnis. – shaunhusain
http://www.shaunhusain.com/CheckActiveEventWeb/ http://www.shaunhusain.com/CheckActiveEventWeb/srcview – shaunhusain
Das ist in der Tat seltsam! Danke, dass du es versuchst. Ich benutze FlashDevelop 4.0.0 Beta R1978 mit Flex 4.6.0. Ich habe keinen Zugriff auf FlashBuilder, werde aber in den flashdevelop-Foren nachfragen. In der Zwischenzeit, wenn jemand flashdevelop hat, wäre es großartig, wenn Sie versuchen könnten, die Ergebnisse zu reproduzieren. – WgFunstorm