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.

 

 
 
 
Update - 08.Nov.1999
 
Copyright by Madania Netware
1996-1999