Ich habe ein ziemlich komplexes Spiel mit vielen Ansichten und viele Controller, und es funktioniert wirklich gut, aber regelmäßig hinkt. Ich versuche, meinen Code so zu reparieren, dass er so effizient ist, wie ich es machen kann, aber ich habe einige Fragen darüber, wer AS3 mit Ereignissen handhabt.AS3 Sollte ich removeEventListener
Hier ist ein sehr einfaches Beispiel:
AppController Lasten 5 verschiedene OverlayControllers. Jeder dieser OverlayController sendet eine Event.COMPLETE, wenn sie von meinem AppController überwacht werden. Ich habe ständig einen EventListener, der diese OverlayController hört, egal wo ich gerade im Spiel bin.
Sollte ich nur diese Listener haben, wenn das Overlay geöffnet ist? Und entfernen Sie sie, wenn sie schließen?
Sollte ich den Ereignis-Listener-Zeitraum umgehen und den AppController einfach an den OverlayControllers übergeben, damit er einfach eine öffentliche Funktion aufrufen kann, anstatt einen EventListener zu benötigen?
Nur um klar zu sein, das sind keine Objekte, die ich von der Bühne entferne. Sie werden nur versteckt. Wenn ich jemals ein Objekt entferne, entferne ich immer seine Event-Listener, bevor ich sie lösche.
Das Abhören von Ereignissen erzeugt auf keinen Fall Lags, Dispatch-Ereignisse könnten dagegen, wenn viele ständig versendet werden. Wenn Lag-Probleme selten auftreten, ist eine hohe Objekterzeugung wahrscheinlich, die bei schweren GC-Pässen auftritt. – BotMaster