Probleme mit Zugriff auf über FlashVars-Parameter in AS3
Ich bekomme immer compiler-Fehler, wenn ich versuche, auf flashVars in eine AS3-Klasse.
Hier ist eine abgespeckte version der code:
package myPackage {
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
public class myClass {
public function CTrafficHandler() {
var myVar:String = LoaderInfo(this.root.loaderInfo).parameters.myFvar;}}}
Und ich bekomme einen Kompilierungsfehler:
1119: Zugriff möglicherweise nicht definierte Eigenschaft der Wurzel durch einen Verweis mit statischem Typ Quelle:myClass.
Wenn ich ändern Sie die class-Zeile
public class myClass extends Sprite {
Ich nicht bekommen, einen compiler error, aber ich bekomme diese in der Ausgabe-Fenster:
TypeError: Error #1009: Cannot access a property oder eine Methode eines null-objektverweises.
Über den debugger (wie vorgeschlagen) kann ich sehen, dass diese.root null ist.
Wie kann ich dieses problem lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist, dass Ihr DisplayObject nicht Hinzugefügt wurde, um die DisplayList an den Punkt, an dem Sie versuchen, Zugriff auf flash-vars. Das Stamm-Anzeigeobjekt ist daher null, nach Ihrem Objekt.
Können Sie sicherstellen, dass Ihre DisplayObject auf der Bühne mithilfe der folgenden:
`
Habe ich gefunden, was das problem war. Die Klasse, die in Frage war nicht der main-Klasse im Projekt verwendet, aber eher eine sekundäre Klasse.
Habe ich verschoben, den code an die main-Klasse um die Parameter und nachdem ich Sie, ich schickte Sie an den Konstruktor der Klasse function.
Das problem war ja, dass Sie versuchten, Sie zu Zugriff auf diese Informationen aus einer nicht-display-Objekt, oder von außerhalb der document-Klasse. Wenn Sie Zugriff auf root-oder stage-das Objekt, das wünscht so muss zuerst der Anzeigeliste Hinzugefügt.
Verwende ich oft flashvars für Variablen, die verwendet werden, oft während des gesamten Projekts. Variablen, wie z.B. Land und Sprache. Ich finde, dass in diesem Fall ist es am besten zu fangen, diese Parameter in der Dokument-Klasse und erstellen Sie öffentliche Variablen mit den genannten Parametern als Werte. Diese geben _global Stil Zugriff auf diese Variablen. Dass alle gesagt, die Sie wirklich verwenden sollten Globale Variablen sparsam einsetzen, vor allem beim arbeiten an Projekten.
Als alternative könnten Sie versuchen, mit den mx.core.- Anwendung.- Anwendung.Parameter Objekt.
Aus der LiveDocs-Seite für mx.core.Anwendung:
Denke ich, sollten Sie erstrecken sich von Sprite, aber sicher sein, initialisiert es zuerst und vielleicht setzen Sie auf die Bühne. Versuchen Sie, um das debugging zu aktivieren und zu sehen, was genau ist null als Ausnahme-Bericht sagt.