flash AS3-wie Entferne ich den stage-Ereignis-Listener
Baue ich eine animation in flash und as3, ich habe eine Funktion, in der ich noch eine Bühne
eventListener, der Bühne.addEventListener(Event.ENTER_FRAME, setScrollPercent, false, 0, true);
Seit diesem Ereignis festgelegt ist, innerhalb einer Funktion eine Funktion zwei Funktionen tief," Wie kann ich alles zurücksetzen Bühne, Ereignis-Listener von ausserhalb der Funktionen ohne eine Fehlermeldung?
InformationsquelleAutor Ole Media | 2009-02-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Best practices mit eventlisteners sind:
Flex gibt Ihnen keine Destruktoren. Es hat seinen eigenen Garbage Collector läuft hinter den kulissen die Verwaltung von Speicher. Es reinigt bis ein Teil des Speichers einmal gibt es keine Verweise darauf. Gut, starke Referenzen. Alle Objekte standardmäßig haben einen starken Bezug. Event-Handler, denn Sie neigen zu einem performance-Engpass, haben diese Besondere Fähigkeit erklären sich schwach -- eine schwache Referenz. Dies ist natürlich nur möglich, wenn Sie die Befestigung der event-Handler durch die
addEventHandler()
Funktion. Schwache Referenzen werden nicht berücksichtigt, die von der GC und somit, wenn alle starken Referenzen Weg sind, werden Sie automatisch von der garbage Collection eingesammelt, befreien Sie von der Spannung zu tun eine=null
manuell. Das ist das, was man sonst tun, wenn Sie don ' T geben Sie den parameter ein. Standardmäßig, auch Handler erstellt werden, die als starke Referenzen.Jedoch, markieren Sie schwach Nebeneffekt hat. Sie verschwinden in dünne Luft, ohne Sie jemals zu wissen. Schließlich werden Sie wissen, aber in Bezug auf einen fiesen bug. Ist es das, was die Ursache Ihrer Probleme? Vielleicht, vielleicht nicht. Sie haben zu Experimentieren. Auch, es wird helfen, wenn Sie uns mit mehr Details, wie der genaue Fehler-code, einige Quellen.
Hoffe, das hilft. Froh bewegt 🙂
InformationsquelleAutor dirkgently
Welche Fehler sehen Sie? Die Schachtelungsebene nicht haben sollte nichts zu tun, da die Hörer werden nur registriert, indem die Parameter so lange, rufen Sie zu entfernen mit den gleichen drei wichtigsten Parameter, die Sie für das hinzufügen, Sie sollten in Ordnung sein.
Ist Ihre eigentliche Frage, wie ein Verweis auf das listener-Objekt an den außen-Bereich? Wenn dem so ist, gibt es mehrere mögliche Lösungen, und der beste Weg, es zu tun, hängt von der Struktur des Codes.
-- MarkusQ
InformationsquelleAutor MarkusQ
Sollten Sie in der Lage sein, benutzen Sie einfach Ihre alte Funktion und Nutzung removeEventListeners statt hinzufügen. Eigentlich ganz einfach.
InformationsquelleAutor user1912260
Die Antwort auf Ihre Frage, und ich merke, Sie hatte ein problem mit Rahmen, weil ich nur eine Frage beantwortet, die Sie hatten auf Umfang, ist, dass Sie die Arbeit mit der Bühne. Betrachten Sie die Bühne der globalen, wie es ist die Leinwand, in dem alle Ihre display-Objekte gezeichnet werden.
Werden die folgenden arbeiten überall!!!
Nun, die Fehler, die Sie sprechen, ich VERMUTE, ist, dass Sie lediglich die oben removeEventListener, wenn Sie bereit waren, das wird nicht funktionieren.
Den removeEventListener Funktion NICHT akzeptiert fünf Parameter, wie seine Geschwister addEventListener, es erlaubt nur die drei ignorieren die Priorität und die weak-Referenz, wie das folgende zeigt.
hoffe, das hilft, denken Sie daran, dass Phase ist die Globale Wurzel in einem Gefühl, und vorsichtig sein, root, es funktioniert tatsächlich wie es soll, nun in der Tatsache, dass der Aufruf root ist jetzt relativ zu der swf-rufen Sie es aus, nicht die Stufe, es sei denn, die Bühne ist die Wurzel des aktuellen Gültigkeitsbereichs.
InformationsquelleAutor Brian Hodge