Drei Methoden zum Erzeugen von Movieclips
Ergebnis der swf-Datei
Jede Wellenlinie wurde in einem eigenen Movieclip gezeichnet. Jeder Movieclip wurde mit einer anderen Methode erzeugt.
Der Programmcode mit Kommentar ohne Erklärungen
Kommentare sind im nachfolgenden Code grau geschrieben.
// ZEICHNEN EINER WELLENLINIE IN EINEM MOVIECLIP MIT DREI VERSCHIEDENEN METHODEN |
Der Programmcode mit Erklärungen
1. Methode mit createEmptyMovieClip
Die Methode createEmptyMovieClip(name:String, depth:Number): MovieClip
erstellt einen leeren Movieclip, der einem vorhandenen Movieclip untergeordnet ist. Der Registrierungspunkt für den neuen leeren Movieclip ist die linke obere Ecke des Movieclips in dem der neue erzeugt wurde.
Der Parameter name vom Typ String ist der Instanznamen des neuen Movieclips. Der Parameter depth vom Typ Number ist eine Ganzzahl zur Angabe der Tiefenebene des neuen Movieclips.
Movieclips werden innerhalb eines übergeordneten Movieclips übereinandergelegt und durchnummeriert.
Der Moveiclip mit der Tiefe 1 liegt dabei ganz unten, aber über allen Ebenen, die in der Flash-Entwicklungsumgebung angelegt wurden.
Der Rückgabewerte der Methode liefert eine Referenz auf die neu erstellte Movieclip-Instanz.
createEmptyMovieClip("welle1_mc", 1); |
Im obigen Fall wird im Mainmovie ein neuer leerer Movieclip mit dem Namen welle1_mc und der Tiefe 1 angelegt. Im Mainmovie deshalb, weil das Script im ersten Frame der Timeline des Mainmovies plaziert ist.
Da der neue Movieclip welle1_mc nicht extra positioniert wurde, ist sein Ursprung in der linken oberen Ecke des Mainmovies. Deshalb wurde der Startpunkt der Kurve, die in dem neuen Movieclip gezeichnet wird, relativ zur Bühnenhöhe definiert
Namenskonvention: Movieclipnamen sollten zur besseren Lesbarkeit immer mit _mc enden.
Automatische Auswahl der Moviecliptiefe
Wenn man einen Movieclip mit einer konkreten Tiefe erzeugt, kann es passieren, dass ein Movieclip mit dieser Tiefe bereits existiert und dadurch "überschrieben" wird. Denn es kann pro Tiefe nur einen Movieclip geben.
Um das zu verhindern, sollte man die Methode getNextHighestDepth() verwenden, die die nächste noch nicht vergebene Tiefe im übergeordneten Movieclip liefert.
// Erzeugen des leeren Movieclips welle1_mc auf der nächsten freien Ebene createEmptyMovieClip("welle1_mc", this.getNextHighestDepth()); |
Positionierung von Movieclips
Über die Movieclipeigenschaften _x und _y kann man den Ursprung (Registrierungspunkt) eines Movieclips relativ zum Ursprung des übergeordneten Movieclips positionieren.
Wir können daher alternativ zum obigen Beispiel den Ursprung des Movieclips welle1_mc auf das erste Viertel der linken Bühnekante festlegen und die Kurve innerhalb des neuen Movieclips von dessen Ursprung wegzeichnen.
createEmptyMovieClip("welle1_mc", this.getNextHighestDepth()); // Movieclipursprung auf das erste Viertel der Bühnenhöhe festlegen welle1_mc._x = 0; welle1_mc._y = Stage.height/4; // Zeichnen der roten Gesamtkurvenfunktion im Ursprung des Movieclips welle1_mc curve(welle1_mc, baseCurve, [0, 0], Stage.width, 45, 100, 1, 0xFF0000); |
2. Methode mit attachMovie
Die Methode attachMovie(id:String, name:String, depth:Number): MovieClip
verknüpft ein Symbol aus der Bibliothek mit dem neuen Movieclip.
Der Parameter id vom Typ String ist der Verknüpfungsname des Movieclip-Symbols in der Bibliothek, das einem Movieclip auf der Bühne zugewiesen werden soll. Das ist der Name, den man im Dialogfeld Verknüpfungseigenschaften im Feld Bezeichner eingibt.
Der Parameter name vom Typ String ist der eindeutige Instanzname für den neuen Movieclip und depth gibt wieder die Tiefenebene des Movieclips an.
Der Rückgabewerte der Methode liefert eine Referenz auf die neu erstellte Movieclip-Instanz.
attachMovie("EmptyClip", "welle2_mc", 2); |
Im obigen Fall wird im Mainmovie ein neuer Movieclip mit dem Namen welle2_mc und der Tiefe 2 angelegt und mit dem Symbol EmptyClip aus der Bibliothek verknüpft.
Da der neue Movieclip welle2_mc nicht extra positioniert wurde, ist sein Ursprung wieder in der linken oberen Ecke des Mainmovies. Deshalb wurde der Startpunkt der Kurve, die in dem neuen Movieclip gezeichnet wird, relativ zur Bühnenhöhe definiert.
Damit die Verknüpfung zu einem Symbol der Bibliothek möglich ist, muss dieses in der Autorenumgebung von Flash über den Menüpunkt Einfügen > Neues Symbol ... (Strg+F8) erzeugt werden.
Wichtig ist dabei die Aktivierung der Verknüpfung Export für ActionScript.
Das Symbol mit dem frei gewählten Namen EmptyClip liegt anschließend in der Bibliothek, ist leer, d.h. enthält keine Grafikelemente und kann über attachMovie verknüpft werden.
Variation bei Auswahl der Moviecliptiefe und Positionierung des Movieclips
attachMovie("EmptyClip", "welle2_mc", this.getNextHighestDepth()); // Movieclipursprung auf das erste Viertel der Bühnenhöhe festlegen welle2_mc._x = 0; welle2_mc._y = Stage.height/2; // Zeichnen der grünen Gesamtkurvenfunktion im Ursprung des Movieclips welle2_mc curve(welle2_mc, baseCurve, [0, 0], Stage.width, 45, 100, 1, 0x00FF00); |
3. Methode: Plazieren des leeren Symbols auf der Bühne in der Flashautorenumgebung
Bei dieser Methode wird das leere Symbol "EmptyClip" in der Autorenumgebung von Flash aus der Bibliothek als Instanz auf die Bühne gezogen.
Dadurch ist die Position definiert. Die MovieClip-Instanz bekommt in der Eigenschaften-Palette einen eindeutigen Namen.
// Ausgangspunkt der Kurve festlegen im dritten Viertel der Bühnenhöhe |
Im obigen Fall wurde das Symbol auf den Bühnenursprung gezogen. Daher wird der Startpunkt der Kurve auf 3/4 der linken Bühnenkante gesetzt.
In der Eigenschaftenpalette bekommt die leere Movieclipinstanz den Namen welle3_mc und muss daher nicht mehr in ActionScript definiert werden.
Die Instanz wurde in einer eigenen Ebene im Frame 1 des Mainmovies abgelegt. Daher ist eine Angabe der Tiefe ist nicht notwendig, da dieser Clip jetzt in einer Ebene der Flash-Autorenumgebung liegt.
Variation bei der Positionierung des Movieclips
Das Symbol wurde auf 3/4 der linken Bühnenkante gesetzt. Das ist daher der Ursprung von welle3_mc und somit kann die Kurve im Punkt (0|0) starten.
// Zeichnen der blauen Gesamtkurvenfunktion im Ursprung des Movieclips welle3_mc curve(welle3_mc, baseCurve, [0, 0], Stage.width, 45, 100, 1, 0x0000FF); |