Movieclip Instanzen adressieren

Movieclip Hierarchie, Movieclips referenzieren, Instanzen ansprechen

Mit dem Punktzugriffsoperator können die Funktionen und Eigenschaften einer Movieclipinstanz aufgerufen werden. Man schreibt den Intanznamen oder Pfad, gefolgt von einem Punkt. Darauf folgt die Anweisung bzw. Eigenschaft.
Im Aktionen Bedienfeld gibt man diese Schreibweise am besten im Expertenmodus bzw. ohne Scripthilfe ein. Über das Symbol "Zielpfad einfügen" im Aktionenbedienfeld kann man alle zur Verfügung stehenden Instanzen auswählen und adressieren.
Der Punktzugriffsoperator dient auch dazu Movieclipinstanzen in einer Hierarchie zu adressieren. Im unteren Beispiel wird die Instanz green, welche sich in der Instanz braun befindet aufgerufen. Die eingebettete Instanz braun richtet sich am Mittelpunkt der
Elterninstanz green aus.
on (release) {
red.play ();
}

on (release) {
red.gotoAndStop(1);
}
on (release) {
red._x=350;
}

on (release) {
braun.green._x=-40;
}

Seite 2
onClipEvent (mouseDown) {
_root.play();
}
onClipEvent (mouseUp) {
_root.gotoAndStop("start");
}
Das blaue Quadrat wird mittels Tweening in der Zeitleiste des Hauptfilms animiert. Das grüne Quadrat ist eine MC-Instanz mit obenstehenden Actionscript. Mit dem Alias _root ist immer der Hauptfilm, also die unterste Ebene gemeint.
Das erste Bild dieser Szene hat den Bildnamen "start" bekommen (Eigenschaften- bedienfeld). Der Befehl _root.gotoAndStop(1) würde das erste Bild der ersten Szene aufrufen.
Mit dem Alias _root, der Punktsyntax gefolgt vom Pfad bzw. Instanznamen, kann man jede beliebige Instanz innerhalb des Flashfilms adressieren.
Nehmen wir mal an wir hätten eine Filmsequenz Instanzname rot, welche in einer Filmsequenz Intanzname blau eingebettet ist. Blau liegt im Hauptfilm. So könnte man von jeder anderen Filmsequenz aus die Filmsequenz rot folgendermaßen ansprechen. _root.blau.rot Das nennt man auch eine absolute Referenzierung.
Auch wenn man diesen swf Film mittels load Movie in einen anderen Film geladen hat, so ist mit _root immer die Hauptfilmzeitleiste des Films gemeint, von
der aus die Aktion aufgerufen wird.

Seite3
onClipEvent (mouseDown) {
_parent.play();
}
onClipEvent (mouseUp) {
_parent.gotoAndStop(1);
}
onClipEvent (keyDown) {
_parent.green._alpha=50;
}
onClipEvent (keyUp) {
_parent.green._alpha=100;
}

Das grüne Quadrat hat den Instanznamen green. Das rote Quadrat den Instanznamen red. Beide Instanzen sind in einen MC eingebettet, der mit _parent angesprochen werden kann. Das rote Quadrat wird in der Zeitleiste des "Eltern-MCs" mittels Tweening animiert. Die grünen Aktionen wurden der MC-Instanz green zugewiesen, die roten Actions der Instanz red.
Mit _parent wird die Elternfilmsequenz angesprochen, die eine Ebene tiefer liegt. So wird die Zeitleiste der Elterninstanz mit dem Tweening abgespielt und gestoppt.
Es ist möglich _parent öfter hintereinander zu verwenden. _parent._parent.play(); Hiermit springt man zwei Stufen zurück.
_parent.green._alpha=50; Hier wird die Instanz green, welche auch in der Elterninstanz liegt adressiert, um ihre Eigenschaft _alpha (Transparenz in Prozent) zu ändern. Diese relative Adressierung funktioniert auch, wenn man
a) mehrere Instanzen des Eltern-MCs hätte,
b) die Elterninstanz in einen anderen MC einfügt oder
c) den Instanznamen der Elterninstanz ändert oder gar nicht angibt.

Seite4

onClipEvent (mouseDown) {
this.play();
}
onClipEvent (mouseUp) {
this.gotoAndPlay(1);
}
Diese Aktion wurde der Filmsequenz zugewiesen.
Die Drehbewegung mittels Tweening befindet sich in der Filmsequenz.
this bedeutet, dass sich die Aktion auf die Filmsequenz selbst bezieht.
Dadurch wird die Zeitleiste der eigenen Filmsequenz angesprochen.
Das ist zwar in diesem speziellen Falle nicht nötig, da die Aktion dem Movieclip direkt zugewiesen wurde. Innerhalb von Funktionen muss man den Alias this jedoch verwenden. Siehe Tipp Funktionen: function.fla
Innerhalb von Funktionen kann this dem Alias _parent vorangestellt sein:
this._parent

Hier sind einige verschachtelte Movieclips. Die Instanznamen der MCs stehen in den Kästen. Die schwarzen Linien zeigen die Hierarchie. Die roten Bezeichnungen sind die möglichen Adressierungen von einer Instanz zu einer andern mit dem Punkt Zugriffsoperator. Es gibt die absolute Adressierung mit dem Alias _root (die unterste Ebene oder die Hauptfilmzeitleiste) und die relative Adressierung vom jeweiligen Standpunkt aus gesehen. Hierzu dienen die Aliase _parent (Eltern-MC) und this (eigener Standpunkt).

Hier kann man ausprobieren, ob man es verstanden hat.
Trage in das Eingabefeld den Pfad zur gewünschten Instanz ein und klicke auf einen der Buttons und halte ihn eine Zeit gedrückt. Die Buttons liegen in den Instanzen der MCs. Der eingebene Pfad wird also von der Instanz aus aufgerufen, dessen Button man drückt. Die adressierte Instanz wird halbtransparent. Es sind relative und absolute Pfade möglich.

 

 

Seite 7
on (release) {
loadMovieNum ("movie.swf", 1);
}
on (release) {
_level1.gotoAndStop(10);
}
on (release) {
_level1.gotoAndStop(15);
}

Seite8

Bisher haben wir immer mit dem Punkt Operator gearbeitet. Der Punkt steht zwischen dem Namen eines MCs auf der linken und dessen Eigenschaft oder Variablen auf der rechten Seite. Als Namen sind keine Strings zulässig. Der Array Zugriffsoperator []wertet den Inhalt zu einem Namen aus. Siehe rechts, beide Schreibweisen sind möglich.

 

Klicke zuerst auf den ersten Button um einen zweiten Flash-Film in diesen zu laden.
Jeder geladene Film bekommt eine Ebene zugewiesen, in diesem Fall Ebene 1 näheres dazu, siehe meine Tipps zum Thema Load Movie.
Auf der zweiten Schaltfläche wird Bild 10 des geladenen Films aufgerufen und zwar wird als Ziel die oben erwähnte Ebene _level1 angegeben.
Mit der dritten Schaltfläche wurde die ab Flash 5 mögliche Punktsyntax verwendet.
Der Hauptfilm oder die unterste Ebene liegt immer auf _level0. Damit wird Bild "ziel" des Hauptfilms, von der Schaltfläche des geladenen Films aus, angesteuert.
_root bezieht sich hingegen immer auf die unterste Ebene des eigenen Films

rocket.velocity
rocket["velocity"]
Mit dem Array Operator ist es möglich Instanz- und Variablennamen dynamisch zu erzeugen, folgendes Beispiel: MC Instanzname meinmc, darin ein dynamischesTextfeld mit Instanznamen spruch4. Action des Buttons ohne Eventhandler:

i = 4;
_root.meinmc["spruch"+i]="alles paletti";

Im folgenden haben wir einen MC mit Instanznamen meinmc2. Darin enthalten sind 4 weitere MCs mit den Instanznamen mc1, mc2, mc3, mc4. Bei jedem Klick auf den Button, wird die Variable e jeweils um 1 erhöht. Damit werden dann die Instanzen mc1, mc2 etc. angesprochen und horizontal _x positioniert e*50

e = e+1;
_root.meinmc2["mc"+e]._x=e*50;

 

Hierzu studiere zuvor den Tipp Variablen und Zufallszahl. In der Zeitleiste haben wir ein paar Variablen mit Liedtiteln als strings. Auf dem Button wird der Variablen u eine Zufallszahl zwischen 1 und 4 zugewiesen. Dann wird dem Textfeld mit Variblennamen spruch4 in der MC Instanz meinmc3 eines der Liedtitel zugewiesen und zwar indem mittels eval und der Zufallszahl ein Variablename erzeugt wird. lied1, lied2,....etc.
lied1 = "Alle meine Entchen";
lied2 = "Hänschen klein";
lied3 = "Fuchs du hast die Ganz gestohlen.";
lied4 = "Häschen in der Grube.";

u = random(4)+1;
_root.meinmc3.spruch4=eval("lied"+u);

FlashMX 2004 gibt es im Actionbedienfeld keinen Normal- und Expertenmodus, stattdessen zeigt FlashMX2004 Codehinweise an, wenn Sie Instanzen mit dem entsprechenden Suffix benennen:

Geben Sie beim Benennen einer Movieclip-Instanz immer das Suffix _mc ein, wie z. B. screen_mc.
Verwenden Sie für das Benennen von Schaltflächen das Suffix _btn.
Verwenden Sie für das Benennen von Textfeldern das Suffix _txt.

Seite10

on (release) {
tellTarget ("/green") {
play ();
}
}
Diese Tell Target Methode ist veraltet und wird nicht mehr benutzt, lese weiter auf der nächsten Seite, wenn dich das Thema nicht interessiert.

Der Movieclip mit Instanznamen green hat im ersten Bild die Anweisung stop(), im zweiten folgt mittels Tweenig die Drehbewegung im letzten Bild befindet sich die Anweisung gotoAndPlay(2) .
Diese Filmsequenz wird von den Buttons aus mittels Tell Target angesprochen.
Die TellTargetfunktion erwartet den Pfad zur Instanz als String.
Alle Anweisungen in den geschweiften Klammern beziehen sich auf die adressierte Instanz.

Seite11
on (release) {
with (blue) {
gotoAndStop( 1 );
}
}

with (objekt) {
anweisungen;
}

objekt Eine Instanz eines ActionScript-Objektes oder einer Filmsequenz.
anweisungen Eine oder mehrere Aktionen, die in geschweifte Klammern
-eingeschlossen werden.

Hier wird die with Methode vorgestellt, die erst ab Flash 5 einsetzbar ist. Der Instanzname oder Pfad zum MC wird als Parameter der with Funktion eingefügt. Alle Anweisungen beziehen sich auf die Instanz. Ein praktisches Beispiel findest du hier in Szene 6 im Aktionenbedienfeld der fla Datei.

Seite 12

Viele Actionscript Autoren programmieren die Actions, für alle Instanzen im ersten Schlüsselbild des Filmes, anstatt dem MC die Action direkt zuzuweisen. Vergleiche folgnede Beispiele.

this.gruenMC_mc.onEnterFrame = function() {
this._x=this._x+2;
}
this.onButton_btn.onRelease = function(){
gotoAndPlay(2);
}

 

onClipEvent (enterFrame) {
_x=_x+2;
}

on (release) {
gotoAndPlay(2);
}