as3 Deklaration einer GLOBALEN Variablen in der ZEITLEISTE / außerhalb der KLASSE
Ich bin auf der Suche nach deklarieren Sie eine GLOBALE VAR in der Haupt-Zeitleiste.
Dann brauche ich für den Zugriff auf diese GLOBALEN VAR aus einer anderen extern geladenen SWF-Datei.
FRAGEN:
Wie erstelle ich die Globale var in der Hauptzeitleiste?
Wie kann ich access, dass var in der extern geladenen swf-Dateien?
- -1 für keinen anderen Grund als die Tatsache, dass es immer eine bessere Lösung als die Verwendung einer globalen. Globals in jeder OOP-Sprache ist einfach nur eine Schande.
- AS3 ist nicht nur OOP, und die globals haben ganz sicher einen Platz-zum Beispiel
Event
Namen. Kein Grund für negs auf bad design-Ideen . . . das ist, was Kommentare sind, nachdem alle. - AS3 ist nicht nur OOP. Okay... fühlen Sie sich bitte frei, zu erweitern, auf die ein? Was ist es, eine prozedurale Sprache? Kreuze die Augen und lässt eine verzögerte Gesicht. Jedenfalls ist es weit entfernt zwischen einigen standard definiert Typen für eine sehr spezifische Art der ein Klasse design und ist, wie der OP sagt, schlagen Sie eine Globale variable in der globalen Namensraum, so dass alle geladenen Inhalte zugreifen können von überall. Sie wirklich wollen, um zu rechtfertigen, global.myVar mit einem Vergleich zu Klasse.CLASS_TYPE???
- Ich Stimme mit Ascenscion, dass die Nutzer sollten NICHT ermutigt werden, die Verwendung von globalen/statischen Zustand (misko.hevery.com/code-reviewers-guide/...), aber downvoting jemand die Frage so ziemlich garantiert, Sie nehme die erste Antwort, die jemand gibt, die die entgegengesetzte position, dass der Wähler die, ohne wirklich Betrachtung der feineren Punkte beteiligt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, sollten Sie nicht verwenden alle Globale/statische Zustand. In Ihrer situation ist dies sogar mehr wahr, weil Singletons sind eine königliche Schmerz in den Hintern auf verschiedenen applicationDomains.
Stattdessen sollten Sie etwas namens Dependency Injection. Denken Sie an Ihre kleine SWF-Dateien als hungernde Waisen. Wenn Sie geladen haben, Sie laufen nicht bis zu Ihrem Haupt-swf-Datei und Holen Ihre Taschen. Stattdessen werden die Haupt-swf-großmütig Pressen Geld in Ihre kleinen Hände.
So, wie machen wir das? Eine Möglichkeit ist, dass wir kompilieren könnte ein Verweis auf Ihre Dokument-Klasse(N) in die Haupt-swf-Datei, und dann könnten wir eine variable, die die Klasse stellt. Kann dies aber ziemlich schwer und nicht wirklich notwendig.
Statt, Sie können schreiben, so etwas wie eine Schnittstelle, definiert die "Idee" von einem Waisenkind.
Könnte es wie folgt Aussehen:
Beachten Sie, dass die Verwendung von get-und Set-Methoden mit Schnittstellen, weil Sie nicht verwenden können, Sie zu definieren, Vanille-Variablen. Aber, dieses funktioniert sehr gut für unsere eigentliche Waisenkind:
Nun, alles, was Sie tun müssen, ist füllen Sie diese variable auf laden. Es gibt mehrere Möglichkeiten, wie Sie dies tun können, wie gerade die Bühne für IOlivers geladen zu werden, oder Sie könnte mehr direkte über es:
Wenn diese Variablen werden, dass Sie nur einmal festgelegt und wird sich nie ändern, können Sie einfach erstellen Sie eine Klasse, die hält statische Konstanten.
Dann können Sie Zugriff auf Sie später in Ihrem Programm wie folgt:
Jedoch, wenn Sie möchten, dass Globale Variablen, die sich ändern können, wie ich das zu handhaben, durch die Verwendung einer singleton-Klasse.
Der Unterschied hier ist, dass Sie brauchen, um zu greifen, die Instanz der singleton-bevor Sie lernen können, was in ihm steckt. Es würde Aussehen ein bisschen wie diesem.
Also, wenn Sie ändern ", was auch immer", diese variable ändern für alle geladenen SWF-Dateien. Wenn Sie wollen, um wirklich Lust zu hast, könntest du die Verwendung von get - /Set-Methoden in der singleton-eher als einfache öffentliche Variablen.