Keywords

Animation mit einer Timeline-Loop

Eine Timeline-Loop ist möglich, wenn in der Timeline nicht nur im ersten Frame Schlüsselbilder enthalten sind.
Nach dem Starten der swf-Datei spielt der Abspielkopf Bild für Bild die Timeline ab und nach dem letzten Frame springt der Abspielkopf automatisch wieder zurück zum ersten Frame.
Auch durch den Aufruf der Movieclip-Methode gotoAndPlay(1) im einem beliebigen Frame, springt der Abspielkopf wieder zurück zum ersten Frame und beginnt dort erneut mit dem Abspielen der Timeline.

Siehe auch Eigenschaften und Methoden von MovieClips.

Allgemeiner Aufbau einer Timeline-Loop

Eine Timeline-Loop besteht aus mindestens zwei aufeinanderfolgenden Frames. Falls notwendig kann noch ein drittes Frame für die Initialisierung von Variablen vorangestellt werden.
Eine Timeline-Loop muss nicht unbedingt im ersten Frame der Timeline beginnen.

  1. Man sollte das Frame, in dem die Loop beginnt mit einem Namen versehen (in einer eigenen Marker-Ebene).
  2. Falls man Variable initialisieren möchte, sollte das im Frame vor dem Loopanfang erfolgen.
  3. In jedem Frame der Loop wird ein Skript geschrieben, das eine Movieclip-Eigenschaft relativ zum alten Wert verändert. Dadurch wird diese Eigenschaft durch wiederholtes Abspielen der Loop animiert.
  4. In jedem Frame der Loop wird überprüft, ob das Abbruchkriterium der Animation erfüllt ist. Bei einer Endlosanimation ist das nicht notwendig.
    Wenn das Abbruchkriterium erfüllt ist, wird der Abspielkopf gestoppt oder zu einem anderen Frame geleitet.
  5. Im letzten Frame der Loop gibt es immer einen gotoAndPlay()-Befehl zum Marker des ersten Loop-Frames.


Das Video zeigt das Erstellen einer Timeline-Loop mit zwei Frames und einem vorangestellten Frame für die Initialisierung einer Variablen. Dabei wird in jedem Loop-Frame der x-Wert der Kreisinstanz um einen bestimmten Wert erhöht. Wenn der Kreis den rechten Rand erreicht hat, wird der Abspielkopf und somit die Timeline-Loop mit der Animation gestoppt.

 

 

Das Skript im Initialisierungsframe:

var speed:Number = 10;

Im Initialisierungframe wird in der Variblen speed die Schrittweite angegeben. Durch Verwendung dieses Initialisierungsframes braucht man den Wert nur einmal ändern.

Das Skript im ersten Loop-Frame:

kreis_mc.x += speed;
if (kreis_mc.x + kreis_mc.width/2 >= stage.stageWidth) {
kreis_mc.x = stage.stageWidth - kreis_mc.width/2;
stop();
}

In der Bedingung der if-Anweisung wird geprüft, ob der rechte Rand des Kreises (= Kreismittelpunkt + halbe Kreisbreite) größer ist als die Bühnenbreite. Wenn das der Fall ist, wird der Kreis genau am rechten Rand ausgerichtet und der Abspielkopf gestoppt. Sonst springt der Abspielkopf ins nächste Frame, und es wird das Skript im zweiten Loop-Frame abgearbeitet.

Das Skript im zweiten Loop-Frame:

kreis_mc.x += speed;
if (kreis_mc.x + kreis_mc.width/2 >= stage.stageWidth) {
kreis_mc.x = stage.stageWidth - kreis_mc.width/2;
stop();
} else {
gotoAndPlay("anfang");
}

Wenn die Bedingung in der if-Anweisung noch nicht erfüllt ist, d.h. der rechte Rand wurde noch nicht erreicht, dann wird durch gotoAndPlay("anfang")der Abspielkopf zurück zum ersten Loop-Frame geschickt. Der Rest des Skripts ist analog zum Skript im ersten Loop-Frame.

 

Wichtig:
Die Geschwindigkeit der Animation wird über die Bildrate gesteuert. Je höher die Bildrate desto weicher läuft die Animation.
Auch über die Schrittweite (in diesem Beispiel über die Variable speed) kann die Geschwindigkeit und die Wirkung der Animation beeinflusst werden.