| Steuerung
durch Buttons: Wir nehmen eine der Bewegungs- oder
Morph-Animationen, die wir oben erstellt haben. Mit
FILE - OPEN AS LIBRARY öffnen wir das Flash-Movie,
in dem wir den Button erstellt haben. Wir erstellen
eine neue Layer (INSERT - LAYER) und ziehen den
Button aus der importierten Library in diese neue Layer. |
| |
| Der
Button ist erst dann Bestandteil des neuen Movies, wenn
er in der Movie-eigenen Library auftaucht - bis jetzt
lag der Button nur in der externen Library, die für
uns später nicht mehr zugänglich ist. Jedes Objekt,
das wir verwenden, muß in der einen Movie-Library enthalten
sein. Damit die Übersicht nicht verloren geht,
ist sinnvolles Benennen der Symbole äußerst
wichtig! |
| |
| Wir
wollen, daß die Animation zunächst hin- und herläuft
und sich dabei ständig wiederholt. Der Button soll
eine Art Pause-Funktion erfüllen. Zuerst aktivieren
wir wieder die Animations-Layer (d.h. der Bleistift
muß in der Layer aktiviert sein). In der Zeitleiste
wählen wir aus dieser Layer alle Frames, in denen sich
etwas abspielt. Mit EDIT - COPY FRAMES, einem
Klick in das nächste ganz leere Frame dieser Layer und
EDIT - PASTE FRAMES kopieren wir die Animation.
Diese Kopie (d.h. deren Frames) wählen wir wieder
an und klicken diesmal auf MODIFY - FRAMES - REVERSE. |
| |
| Jetzt
bewegt sich das Symbol also in eine Richtung und wieder
zurück. Leider “hängt” es in der Mitte für
kurze Zeit, da der Zustand “Ende der Animation” in zwei
aufeinanderfolgenden Keyframes enthalten ist: In dem
aus der Original-Animation und in der Kopie, die wir
gerade umgedreht haben. Das läßt sich leicht
beheben, indem wir das blaue Keyframe in der Mitte (also
das erste von den zwei benachbarten in der Mitte) mit
SHIFT-F6 (INSERT - CLEAR KEYFRAME) entfernen
- die Animation wird jetzt direkt bis zum nächsten (hier
roten) Keyframe weitergeführt. Wenn die Länge
der Animation wichtig ist, haben wir jetzt ein Frame
zuviel, d.h. die Animation ist etwas länger geworden.
Um dies zu beheben, klicken wir irgendwo in die Mitte
der ersten Animation und drücken SHIFT-F5
(INSERT - DELETE FRAME). Dadurch werden alle
folgenden Frames und Keyframes in der Zeitleiste nach
links verschoben. |
| |
| Damit
die Animation ständig weiterläuft, könnten
wir LOOP aktivieren (CONTROL - LOOP PLAYBACK),
jedoch ist diese Option in der Shockwave-Animation nicht
zwingend vorhanden. Jetzt zum ersten Testen sollten
wir sie jedoch aktivieren. Dabei sehen wir, daß die
Animation noch einen Punkt hat, an dem sie “etwas hängt”:
Zwischen allerletztem und allererstem Keyframe - auch
hier sitzt der Inhalt beider Keyframes an der gleichen
Bühnenposition. Die Lösung hier verläuft
etwas anders: Wir klicken in das vorletzte Frame, also
das letzte Nicht-Keyframe vor dem letzten Keyframe.
Beachten wir, daß die Position der Animation knapp vor
der Schluß-Position liegt. An dieser Stelle fügen
wir jetzt mit F6 (INSERT - KEYFRAME) ein
Keyframe ein. Flash übernimmt die aktuelle (obwohl nur
berechnete) Position und setzt sie in das Keyframe ein.
Das letzte Keyframe kann nun mit SHIFT-F6 gelöscht
werden. Seltsamerweise erscheint jetzt anstelle des
gelöschten Keyframes ein seltsames rotes Zeichen
vor grauem Hintergrund - Flash hat das eingesetzte Keyframe
zu einem roten Animationsstart-Keyframe gemacht, und
dadurch werden nachfolgende Frames in die Animation
eingebaut. Kein Problem: Wir löschen mit SHIFT-F5
(INSERT - DELETE FRAME) dieses letzte Frame.
Außerdem sollten wir dem letzten Keyframe sagen,
daß ab hier keine weiter Animation folgt: In den Frame
Properties (MODIFY - FRAME) schalten wir TWEENING
auf NONE. |
| |
| Jetzt
haben wir eine flüssige Animation. Damit sie als Shockwave
auch noch loopen kann, sollten wir anstelle der Loop-Funktion
von Flash lieber eine Action verwenden. Bei Actions
ist es sinnvoll, sie immer in eigene Layers zu setzen!
Also erstellen wir eine neue Layer. Diese benennen wir
gleich mal mit Doppelklick auf den Layernamen in “Actions”
um, um Verwechslungen mit anderen Layers zu vermeiden.
An die Stelle des letzten Animations-Keyframes setzen
wir in die Action-Layer ebenfalls ein Keyframe (F6).
Diesem weisen wir in den Frame Properties eine Action
zu, und zwar GO TO. Dabei wird automatisch Frame
1 als Ziel angegeben. Wir aktivieren noch GO TO AND
PLAY und bestätigen. Nicht vergessen, CONTROL
- LOOP PLAYBACK im Hauptbildschirm zu deaktiveren.
Wir starten die Animation, doch der Loop funktiniert
nicht - in Flash müssen alle Frame-Actions (ähnlich
wie die Buttons) extra aktiviert werden, und zwar unter
CONTROL - ENABLE FRAME ACTIONS. Leider
müssen wir jetzt noch feststellen, daß Flash jetzt
zwar brav loopt (und dies wird im Shockwave-Movie auch
geschehen), jedoch bleibt das letzte Bild etwas zu kurz
stehen - das Bild “springt” kurz. Das können wir
jetzt gerade nicht vermeiden, werden wir aber später
noch nachholen - unser Ziel ist erst einmal das Aktivieren
des Buttons. |
| |
| Wir
klicken den Button an - falls das nicht möglich ist,
müssen wir ihn entweder durch Aufziehen eines Rahmens
oder durch deaktivieren der Button-Funktionen (CONTROL
- ENABLE BUTTONS) aktivieren. In den Instance Properties
(MODIFY - INSTANCE oder Apfel-/Control-I)
geben wir die Action STOP an. Das “On MouseUp”
wird dabei automatisch in Form von ON RELEASE eingestellt,
kann aber auch geändert werden. Jetzt müssen wir den
Button wohl wieder einschalten (CONTROL - ENABLE
BUTTONS). Wir starten unsere Animation und können
sie nun mit dem Button zum Stehen bringen. |
| |
| Zur
Beachtung: Der Movie stoppt zwar komplett, aber alle
Buttons sind weiterhin aktiv - der Movie kann also z.B.
wieder gestartet werden! |
| |
| Das
Problem bei der Sache ist jetzt, daß wir das Movie mit
diesem Button nicht mehr starten können. Dies geht nur
auf Umwegen. Hierbei lernen wir eine äußerst praktische
Angelegenheit in Flash, die uns aus dem Director bekannt
vorkommen sollte: Die Movie Clips - entsprechen im Director
den Film Loops, nur funktionieren sie in Flash um Längen
besser. Movie Clips haben außerdem u.a. folgende Vorteile:
Sie sind nachträglich noch 100% veränderbar, man kann
sie mit Actions fernsteuern, sie haben (fast) alle Eigenschaften
eines eigenen Flash-Movies und sie können komplett unabhängig
von der restlichen Animation laufen. |
| |
| Wir
deaktivieren alle aktiven Instanzen auf der Bühne und
erzeugen ein neues leeres Symbol, diesmal vom Typ MOVIE
CLIP. In den Movie Clip ziehen wir den Button aus
der Library. Wir erzeugen ein zweites Keyframe, z.B.
in Frame 5 (in Frame 5 INSERT - KEYFRAME) und
weitere Frames z.B. bis Frame 10 (in Frame 10 INSERT
- FRAME). Unser Ziel ist es, daß sich dieser Movie
Clip mit Hilfe des darin enthaltenen Buttons selbst
fernsteuert - es soll zwischen zwei Zuständen hin- und
hergesprungen werden: Um eine Pause-Funktion zu simulieren,
muß zwischen PLAY und STOP als Button-Action
umgeschaltet werden können. Dies passiert, indem wir
zwischen zwei Keyframes springen, die zwar das gleiche
Symbol als Instanz enthalten, die Instanz aber unterschiedliche
Actions. |
| |
| Zum
Testen wäre es jetzt angenehm, eine weitere Layer einzubauen,
in der der aktuelle Zustand des Buttons angezeigt wird.
Wir setzen eine neue Layer ein (INSERT - LAYER),
die an oberster Stelle in der Zeitleiste erscheinen
sollte (nötigenfalls nach oben ziehen). Wir setzen Keyframes
ein, und zwar in die gleichen Frames wie in der Button-Layer.
Im ersten Keyframe (die neue Layer muß aktiviert sein,
also der Bleistift neben dem Layer-Namen aktiv) setzen
wir schnell einen Buchstaben ein (Textwerkzeug), z.B.
als erstes ein “S” für STOP. Ins zweite Keyframe
setzen wir ein “P” für PLAY ein. |
| |
| Als
nächstes benötigen wir eine weitere Action-Layer (INSERT
- LAYER, Layer wieder “Actions” benennen). Auch
hier setzen wir Keyframes ein, und zwar in die gleichen
Frames wie in der Button-Layer. Jedem dieser Keyframes
ordnen wir in den Frame-Properties die Action STOP
zu, damit dieser Film Loop nicht einfach weiterspielt
und der Button nicht zu blinken beginnt. Außerdem vergeben
wir den beiden Keyframes LABELS - dies findet
wiederum in den Frame Properties statt. Im ersten Keyframe
lautet das Label z.B. “Stop” und im zweiten “Play” -
entsprechend der Funktion, die der Button an der jeweiligen
Stelle erfüllen soll. |
| |
| Jetzt
wählen wir im ersten Keyframe unseren Button an. Vorsicht
- nur der Button, d.h. das zu ändernde Objekt allein
darf angewählt sein! Wir geben ihm in den Instance Properties
die Action GO TO mit dem Parameter LABEL
“Play” (ON RELEASE wird automatisch auf Buttons
angewendet). |
| |
| Im
zweiten Keyframe wählen wir wieder den Button und öffnen
wieder die Instance Properties. In diesem Keyframe hat
der Button noch keine Action - die hat nur eine Instanz
des Buttons, die an dieser Stelle nicht existiert -
diese Instanz ist noch ohne Action. Dieser Instanz weisen
wir die Action GO TO mit dem Parameter LABEL
“Stop” zu. Verlassen wir mit Apfel-/Control-E (EDIT
- EDIT MOVIE) den Movie Clip. Nun müssen wir noch
den alten Button von der Bühne entfernen und stattdessen
den neuen Movie Clip einfügen. Leider können Movie Clips
in Flash beim Authoring nicht direkt abgespielt werden.
Unter CONTROL - TEST MOVIE (oder Apfel-/Control-RETURN)
wird das Flash-Movie in Shockwave umgewandelt und gleich
testhalber im Shockwave-Player von Flash gestartet -
hier verhält sich das Movie genauso wie z.B. im Netscape,
nur werden Befehle wie z.B. GET URL nicht funktionieren. |
| |
| Beim
Testen müßte jetzt folgendes passieren: Die Animation
läuft, der Button ist sichtbar und aktiv und trägt den
Buchstaben “S” für Stop - die erste Action des Buttons
wäre hier STOP, da die Animation ja gestoppt
werden soll. Wenn wir den Button drücken, wird nur das
“S” gegen das “P” für PLAY ausgetauscht - in
der Animation ändert sich nichts. Mit Apfel-W bzw. Control-F4
schließen wir das Test-Fenster und editieren unser Movie
weiter. |
| |
| Es
fehlen noch die Actions, um die Animation zu steuern.
Wir wählen unseren Button (= den Movie Clip) und drücken
Apfel-/Control-E (EDIT - EDIT SYMBOLS).
Mit dem Button im ersten Keyframe soll die Animation
gestoppt werden, also editieren wir die Instance Properties
des Buttons (Apfel-/Control-I). Unter ACTIONS
klicken wir auf GO TO AND STOP und wählen jetzt
eine weitere Action dazu, nämlich TELL TARGET.
Mit diesem Befehl können Befehle weitergeleitet bzw.
Movies und Movie Clips ferngesteuert werden. Im Fenster
TARGET geben wir nur zwei Punkte (“..”) an -
dies entspricht dem nächsten Objekt, das über dem Movie
Clip steht, ähnlich wie beim Ordner-Wechsel in HTML-HREFs.
In diesem Fall ist das nächste übergeordnete Objekt
der ganze Movie selbst. Dann fügen wir eine weitere
Action hinzu, nämlich STOP. Das Ganze sorgt jetzt
also dafür, daß auf Klick auf den Button im Movie Clip
der Befehl STOP aus dem Movie Clip in das Movie
übertragen wird. |
| |
| Im
zweiten Keyframe gehen wir genauso vor: In den Instance
Properties des Buttons klicken wir unter ACTIONS
den Befehl GO TO AND STOP an, wählen den neuen
Befehl TELL TARGET, geben dort wieder im TARGET-Fenster
die zwei Punkte an und setzen als letzten neuen Befehl
PLAY ein. Mit Apfel-/Control-E verlassen
wir wieder den Symbol-Editier-Modus und testen das Movie
wieder (Apfel-/Control-RETURN). Jetzt funktioniert
auch das Fernsteuern der Animation. |
| |
| Als
kosmetischen Gründen kann man jetzt einerseits die Schrift
aus dem Button Movie Clip entfernen und andererseits
in den eben editierten Actions dafür sorgen, daß zuerst
die Animation gestoppt und dann erst der Button “ausgetauscht”
wird. Für letzteres editiert man wieder die Instance
Properties der Buttons im Movie Clip, klickt dort die
Action GO TO AND STOP an und verschiebt sie mit
den beiden Pfeiltasten darüber in die vorletzte Zeite,
so daß sie zwischen END TELL TARGET und END
ON liegt - das Gleiche mit dem Button im anderen
Keyframe. Jetzt wird die Animation schneller gestoppt. |
| |
| Was
aber, wenn wir zwei Animationen getrennt voneinander
steuern wollen ? Auch hier werden wieder Movie Clips
und der Befehl TELL TARGET eingesetzt. |
| |
| Im
Movie-Edit-Modus (unterhalb der Layer-Namen steht SCENE
1, ansonsten stünde dort der Name des editierten Objekts)
wählen wir alle Frames aus der Layer mit der zu steuernden
Animations aus und führen wieder EDIT - COPY FRAMES
(Apfel-/Control-Alt-C) aus. Jetzt alle Objekte
de-selektieren (EDIT - DESELECT ALL oder Apfel-/Control-Shift-A)
und ein neues Symbol erstellen (INSERT - CREATE SYMBOL
oder F8), das als BEHAVIOUR MOVIE CLIP
erhält. Jetzt klicken wir im leeren Movie Clip Keyframe
1 an und setzen das eben kopiert wieder ein - EDIT
- PASTE FRAMES oder Apfel-/Control-Alt-V. |
| |
| Wenn
man mit PASTE FRAMES arbeitet, muß man aufpassen,
was gerade in der Zeitleiste selektiert ist, v.a. wenn
ich mehrere Layers kopiert habe. Beste Vorgehensweise:
Genausoviele Frames und Layers in der Zeitleiste vor
dem PASTE-Vorgang selektieren, wie vorher bei
COPY! |
| |
| Editier-Modus
wieder ändern (Apfel-/Control-E). Im Movie steht
die Animation noch in der Zeitleiste. Alle Frames in
dieser Layer anwählen und ganz gemein Shift-F5 (INSERT
- DELETE FRAME) anwählen - die Layer wird komplett
von Frames geleert! Um in dieser Layer jetzt den Movie
Clip einsetzen zu können, muß jedoch wieder ein leeres
Keyframe erzeugt werden (INSERT - KEYFRAME oder
F6). In dieses setzt man jetzt aus der Library
den eben erzeugten Movie Clip ein. |
| |
| Wenn
wir jetzt das Movie testen (Apfel-/Control-RETURN),
passiert jedoch bei Klick auf den Button nichts mehr
- ganz klar: Der Movie selber kann ja stehen - die Movie
Clips laufen unabhängig weiter! Also müssen wir unsere
Fernsteuerung nochmal überarbeiten. Bevor wir die Animation
(den jetzigen neuen Movie Clip) steuern können, müssen
wir ihm einen Namen geben, und zwar seiner Instanz.
Wir öffnen die Instance Properties des Movie Clips der
Animation. Unter DEFINITION findet sich rechts
unten ein Feld namens INSTANCE NAME - dieses
gibt es nur bei Movie Clips! Hier setzen wir jetzt z.B.
“Anim1” ein. |
| |
| Wir
verlassen den Movie Clip, editieren den Movie Clip des
Buttons und ändern dort in beiden Keyframes in den Instance
Properties die Actions BEGIN TELL TARGET: Unter
TARGET wird hinter die beiden Punkte der Name
des Animations Clips gestellt, so daß jetzt darin stehen
muß: “../Anim1”. Den Schrägstrich (Slash) brauchen wir
als Abtrennung: Die Punkte bedeuten “Eine Ebene höher”
und das Ganze bedeutet dann also “Anim1, das sich eine
Ebene höher befindet”. Mit Ebene ist hier jedoch nicht
die Layer-Ebene gemeint, sondern die hierarchische Struktur:
Movie -> Movie Clip 1 -> Movie Clip 1.1 -> Movie Clip
1.1.1 usw., ähnlich einer Ordner-Struktur, die ja bei
HREF in HTML genauso funktioniert. |
| |
| Jetzt
dürfen wir nur nicht vergessen: Wir hatten in der Animations-Layer
vorher knapp unter 40 Frames - jetzt steht dort ein
einsames Keyframe. Entweder wir füllen den Abstand mit
F5 wieder auf oder wir verkürzen das ganze Movie
auf 1 Frame. Im letzten Keyframe haben wir außerdem
immer noch die Loop-Action - die sollte jetzt auch noch
rausfliegen, da ein Movie Clip von sich aus immer loopt.
Wenn wir jetzt das Movie wieder testen, ist alles in
Ordnung. |