Variablen

Variablen sind Behälter zum Speichern von Informationen, wobei der Behälter immer gleich bleibt und sich lediglich sein Inhalt ändert. Eine Variable besteht aus dem **Variablennamen**, einem **Datentyp** und einem **Wert**, wobei der Datentyp bestimmt, welche Art von Werten diese Variable speichern kann.

Deklaration & Initialisierung
Bei der **Deklaration** werden Name und Typ einer Variablen bestimmt, in Abhängigkeit vom Datentyp wird dabei eine bestimmte Menge Speicherplatz reserviert (z.B. 1 Bit für einen Boolschen Wahrheitswert). code format="actionscript" var alter:Number; //eine Variable mit dem Namen alter und dem Datentyp number wird deklariert alter = 77; //der Variablen alter wird der Wert 77 zugewiesen var alter:Number = 77; //man kann Deklaration und Initialisierung auch in einer Zeile erledigen code Genau genommen kann man die Deklaration (Schlüsselwort var und/oder Angabe des Datentyps) manchmal auch weglassen (insbesondere in AS2) und eine Variable direkt initialisieren. Das führt aber dazu, dass der Compiler den Datentyp erraten muss, und das kann in sehr schwer zu behebenden Fehlern resultieren. Aus diesem Grund sollte man den Datentyp immer angeben, und deswegen ist AS3 auch strikter geworden, was die Typisierung angeht.
 * Initialisierung** nennt man es, wenn der Variablen zum ersten Mal ein bestimmter Wert zugewiesen wird, d.h. die Bits im reservierten Speicherplatz werden so gesetzt, dass sie den entsprechenden Wert repräsentieren (z.B. 0 für false im obigen Wahrheitswert).

Die Kisten-Analogie
Man kann sich eine Variable gut wie eine Kiste vorstellen: Für einfache Datentypen endet die Geschichte hier, für komplexe Datentypen braucht es noch eine kleine Erweiterung: Zwar kann eine Kiste immer nur genau ein Ding enthalten (oder leer sein), aber das eine Ding kann selbst aus mehreren Dingen zusammengesetzt sein. Gut vorstellen kann man sich das mit Arrays: hier wird sozusagen ein kleines Regal in die Kiste gelegt (der Wert entspricht dem Regal), und das Regal enthält mehrere Fächer/Kisten mit Zahlen, Buchstaben, Wahrheitswerten, oder sogar weiteren Regalen drin. Im Allgemeinen nennt man die komplexeren Datentypen übrigens Objekte, und sie können nicht nur Daten speichern, sondern u.U. auch Dinge berechnen - das Regal kann z.B. berechnen, wie viele Fächer es hat. Auf dieselbe Art und Weise können auch Display-Objekte (z.B. MovieClips) in einer Variablen gespeichert, bzw. in eine Kiste gepackt werden - in diesem Fall entspricht der Typ der Kiste dem Objekt, das man speichert (z.B. MovieClip). Wenn man eine Variable deklariert - also eine neue Kiste erschafft - muss man angeben, welche Arten von Werten in diese Kiste passen sollen. Der Typ der Variablen ist also so etwas wie die Form und Grösse der Kiste, sie können sich vorstellen, dass es problematisch sein kann, wenn Form und Inhalt einer Kiste nicht zusammen passen. Einen Überblick über die gebräuchlichsten Kistenformen finden sie auf der Seite Datentypen.
 * Der **Datentyp** entspricht der Form & Grösse der Kiste, er bestimmt, welche Dinge man hineintun kann
 * Der **Wert** entspricht dem Ding, das man in die Kiste hineinlegt oder aus der Kiste herausholt; die Kiste kann auch leer sein
 * Den **Namen** schreibt man auf die Kiste, damit man sie wiederfindet. Es ist gut, wenn man schon am Namen sieht, was die Kiste wohl enthält - dafür muss der Programmierer sorgen, denn Namen können (fast) beliebig gewählt werden

Zuweisung
Fast jede Codezeile enthält genau ein Gleichheitszeichen, sie formuliert damit eine Zuweisung. Eine Zuweisung ist wohl der häufigste aller Befehle an den Computer, umgangssprachlich lautet er ungefähr so: code format="actionscript" var z1:Number = 4; //hier gibt es nicht viel zu berechnen, der Wert 4 wird als z1 gespeichert z1 = z1 + 1; //der unter dem Namen z1 gespeicherte Wert wird um eins erhöht und das //Ergebnis wird dann wieder unter z1 gespeichert (alter Wert wird überschrieben) var zahl:Number = 6 * 3 - z1; //die rechte Seite ergibt 13, da z1 ja inzwischen eine 5 enthält //der Wert 13 wird also in zahl gespeichert (zahl <- 14) var zahlen:Array = new Array(5, z1, z1*2); /*die rechte Seite ergibt einen Array mit den Zahlen 5, 5 und 10, dieser wird unter dem Namen zahlen gespeichert*/ code Eigentlich sollte man sich beim Programmieren angewöhnen, ein Gleichheitszeichen (Zuweisung) als einen nach links gerichteten Pfeil zu lesen, weil er den Wert auf der rechten Seite in die auf der linken Seite benannte Kiste packt, z.B.: //z1 <- 2*3;//.
 * //Berechne, was auf der rechten Seite des Gleichheitszeichens steht und speichere das Ergebnis unter dem Namen ab, der links vom Gleichheitszeichen steht.// **

Geltungsbereich
Eine Variable ist normalerweise nur in dem Kontext zugänglich, in dem sie deklariert wurde. Wird beispielsweise eine Variable innerhalb einer Methode oder Funktion erschaffen, dann kann man diese **lokale Variable** nur genau dort (innerhalb der Methode oder Funktion) benutzen - sobald die Ausführung der Funktion beendet ist, gibt es die Variable nicht mehr. Variablen können auch ausserhalb einer Funktion oder Methode deklariert werden. Da AS-Code immer innerhalb eines bestimmten Objekts steht, gehören solche Variablen dann zu einer bestimmten Instanz. Solche **Instanzvariablen** können von allen Funktionen oder Methoden der Instanz benutzt und verändert werden. Von ausserhalb der Instanz kann man normalerweise mit Punktsyntax auf solche Variablen zugreifen. So kann man beispielsweise mit AS Code in einem anderen Objekt den Wert der Instanzvariable //speed// innerhalb der Instanz //auto1_mc// verändern, indem man schreibt: //stage.auto_mc.speed = 50//.