Globale Variablen in AS3

jobroyer

Mitglied
Hallo,

ich habe in AS2 immer mit globalen Variablen, die überall gelten, gearbeitet.

Wie funktioniert das in AS3?

Ich habe die Variablen bereits so definiert, allerdings noch nicht global:

PHP:
var MeineVariable:int = 0

Ich benötige eine Variable, die das aktuelle Thema beinhaltet (Thema1, Thema 2, etc.), die in diversen Movieclips abgefragt werden soll...

jobroyer
 
Globale Variablen sind nicht ECMA Skript konform, d.h. global gibt es in AS3 nicht mehr.

Du kannst ein Klasse nehmen mit einem static attribut und dort dein wert definieren:
PHP:
package{

	public class Global{

		public static var foo:String;

	}
}

//
import Global;
Global.foo = "bar";
 
Erst mal vielen Dank.

Kurze Frage noch:

Wenn ich mehrere Variablen habe, muss ich dann für jede Variable den kompletten Definitionsblock schreiben oder lässt sich das verkürzen?

jobroyer
 
Hi,
Nein, du musst nur die Klasse um ein weiteres static attribut erweitern.

PHP:
package{

	public class Global{

		public static var foo:String;
        public static var bar:String;

	}
}

//
import Global;
Global.foo = "foofoo"; 
Global.bar = "barbar";

Es steht dir aber natürlich frei, mehrere Klassen zu verwenden, falls du der Meinung bist, deine Variablen irgendwie strukturieren (o.ä). zu müssen.

Grüße!
 
...habe das so wie Du es geschrieben hattest probiert und bekomme die Compilermeldung:

1037: Pakete dürfen nicht verschachtelt sein
Quelle: package{

Irgendetwas scheint noch nicht zu stimmen?!

jobroyer
 
ne, hatte ich nicht.

Ich habe den kompletten Inhalt wie oben besprochen in die global.as geschrieben.

Nur wie bekommt Flash die Aufforderung die .as zu lesen ?

jobroyer
 
Okay, also das kommt in die Global.as
Code:
package{

    public class Global{

        public static var foo:String;
        public static var bar:String;

    }
}

Wenn du nun in einem anderen Script bist, dann musst du diese Klasse importieren, um darauf zuzugreifen:
Code:
import Global;
 
OK, ich jetzt nur den ersten Teil in die .as geschrieben.

Dann habe ich im Hauptfilm den Befehl zum Import in das erste Schlüsselbild geschrieben und dann müssen ja auch noch Werte zugeordnet werden:

PHP:
import Global;
Global.foo = "foofoo"; 
Global.bar = "barbar";

Wenn ich jetzt per trace die Werte abfrage, wird nichts ausgegeben:
PHP:
trace(Global.foo);

Steckt da noch ein Syntaxfehler drin?

jobroyer
 

Neue Beiträge

Zurück