Erzeugen von Movieclip-Instanzen zur Laufzeit mit new

Es besteht auch die Möglichkeit, Movieclip-Instanzen zur Laufzeit zu erzeugen. Dabei kann man zwei Fälle unterscheide

  1. Ein Movieclip-Symbol wurde bereits erstellt und in der Bibliothek abgespeichert.
  2. Eine leere Instanz der Movieclip-Klasse (= leerer Container) wird  zur Laufzeit generiert und anschließend wird z.B. mit Hilfe der Graphics-Klasse die Grafik in den Movieclip-Container gezeichnet. Dieser Fall wird in diesem Modul nicht behandelt.

Im folgenden gehen wir davon aus, dass in der Bibliothek ein Movieclipsymbol abgespeichert ist.

Export für ActionScript

Wichtig ist nun, dass die Movieclip-Eigenschaft "Export für ActionScript" aktiviert wird.

Eigentlich wird eine Unterklasse der Klasse MovieClip erstellt, die alle Eigenschaften und Methoden eines Movieclips erbt und einen eigenen Namen bekommen muss. Der Name der in der Grafik bei "Klasse:" steht, ist der Name über den ActionScript die Klasse anspricht. Der Name ganz oben im Eigenschaftenfenster ist der Symbolname für die Bibliothek. In der Regel sind die beiden Namen identisch (muss aber nicht sein).

"Export für ActionScript" ist deshalb notwendig, weil beim Erstellen der swf-Datei normalerweise nur die Bibliothekselemente berücksichtigt werden, von denen Instanzen auf der Bühne liegen oder darin verwendet werden. Durch Aktivieren von "Export für ActionScript" wird erzwungen, dass die "Bauanleitung" aus der Bibliothek in die swf-Datei gepackt wird, obwohl noch keine Instanz auf der Bühne liegt.

Erzeugen der Instanz zur Laufzeit

Normalerweise wird zuerst eine Variable vom Typ MovieClip definiert, in der die Instanz abgespeichert wird, um später darauf zugreifen zu können. (Variable speichern Informationen, die man in der Zukunft einmal brauchen wird.)
Wieder die Konvention beachten: mit kleinem Anfangsbuchstaben beginnen.

var kreis_mc:MovieClip;

Anschließend wird eine Instanz der Klasse Kreis mit new erzeugt und in der Variablen kreis_mc abgespeichert.

kreis_mc = new Kreis();

Für Fortgeschrittene: Genau genommen wird die Konstruktormethode der Klasse aufgerufen. Eine Methode ist eine Funktion und daher die Klammern.

Natürlich kann man die zwei Zeilen zusammenfassen.

var kreis_mc:MovieClip = new Kreis();

Die Instanz ist nun erzeugt, aber wird noch nicht auf der Bühne angezeigt. Dazu muss sie noch zur Anzeigeliste des übergeordneten Containerobjekts hinzugefügt werden.

this.addChild(kreis_mc);

Jetzt ist der Kreis auf der Bühne zu sehen. Automatisch wird die Instanz im Ursprung des übergeordneten Containers platziert.Anschließend kann man die Eigenschaften z.B. x und y verändern damit der Kreis auf die Bühne zentriert ist.
this bezieht sich in diesem Fall auf die Maintimeline. Siehe Modul DisplayObject

kreis_mc.x = stage.stageWidth/2;
this.getChildAt(0).y = stage.stageHeight/2;
 
Die Änderungen der Eigenschaften x und y erfolgt auf zwei Arten, die im nachfolgenden Kapitel erklärt werden.