Wie Sie Zugang zu Bühne in eine Klasse, die nicht von einem DisplayObject?
Wie greife ich auf die Bühne, die in Actionscript 3 in einer Klasse, das ist nicht meine main-Klasse und nicht von einem displayobject?
- Warum nicht einfach übergeben Sie an den Konstruktor?
- Wegen der übergabe an den Konstruktor ist ein Schmerz in den Arsch. Statische Klassen müssen nicht von Konstruktoren und hinzufügen eines statischen "init" - Methode würde Niederlage der Zweck der mit einer statischen Klasse, da würde Sie daran denken müssen, initialisieren Sie es in jedem Projekt verwenden könnte, eine solche Klasse. Die Bühne ist immer vorhanden und es ist eine epische Fehler, es kann nicht zugegriffen werden aus einem statischen Kontext, in AS3, ohne einige manuelle verstauen Sie es in einer beliebigen statischen Variablen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
der einfachste Weg ist die Verwendung eines global-Objekt
http://github.com/inruntime/AS3-Global-Object
diese Seite enthält Beispiele zum setzen und abrufen von Objekten aus einer Klasse.
Den einfachen Weg, Sie können halten Sie es in einem
static var
zum Beispiel:und in Ihre andere Klasse importieren Sie die Klasse, die die static var, natürlich die var initialisiert werden, bevor Sie auf es.
Adobe versäumt, einen statischen Zugang zu der Bühne, so dass Sie keine option, aber es selbst implementieren.
Dies ist ein epic fail, da ist es unmöglich auf der Bühne, bevor Sie Ihr Hauptdokument Klasse-Instanz-Konstruktor ausgeführt wird zum verstauen der Bühne-Instanz in einem beliebigen statischen Variablen.
Da müssen Sie initialisiert werden, dass beliebige statische variable jedes mal, wenn Sie wollen, einen statischen Zugang zu der Bühne, ist es am besten, um sicherzustellen, dass Sie nur einmal tun.
Um sicherzustellen, dass Sie werden nur haben, um ihn zu initialisieren einmal, Sie müssen sicherstellen, dass JEDE STATISCHE METHODE, die Sie jemals schreiben Punkte auf die variable und nicht versuchen, darauf zuzugreifen, bevor es initialisiert wird.
Alles gegeben, dass... die meisten logischen Schritte sind:
1. Datei eine Feature-Anfrage mit Adobe JETZT.
2. Erstellen Sie eine "Globale" oder "Dokument" Basisklasse initialisieren einer statischen variable Bühne für Sie, und haben alle Ihre Dokumenten-Klassen die von Ihr Erben. Erweiterung MovieClip bietet Ihnen die größte Flexibilität:
Werden Sie nicht haben, um zu schreiben, die diese Klasse mehr als einmal, solange alle Ihre Dokument-Klassen erweitern die oben definierte "Document" Klasse (und ruft "super" in seinem Konstruktor sofort). Indem Sie das tun, Ihr Dokument Konstruktor-code und dem rest des Projekts von diesem Punkt aus haben einen statischen Zugang zur Bühne über "Dokument.sstage". Es gibt keine Möglichkeit für einen statischen Kontext zugreifen auf die Bühne, bevor diese Initialisierung tritt in den wichtigsten Dokument-Klasse.
Ich schlage vor, Sie übernehmen diese Art von Konsistenz, die sehr früh auf, weil es wird es leichter zu beheben, wenn Adobe immer fügt einen statischen Zugang zur Bühne. Wird es einfach eine Frage der ersetzen Sie "Dokument.sstage" mit dem, was Adobe so bietet.
Könnten Sie accessor-und mutator-Klasse zum festlegen und abrufen der Bühne-Instanz?