Neben vorgefertigten Animationsabläufen bietet Flex 4 eine Tween-Engine, die zum Umsetzen von individuellen Animationen gedacht ist. Dazu gibt es die neue Klasse Animation, wodurch die frühere Tween-Klasse ausgedient hat.

Das Tweening funktioniert bequem mit MXML-Code (oder natürlich direkt in ActionScript) und erlaubt es, einzelne Keyframes zu setzen.

Zuerst ein kleines Beispiel, das die Tween-Engine in Aktion zeigt. Klickt man auf den Button, wird die Position (x), die Rotation (rotation) und die Breite (width) des Objekts animiert.

Get Adobe Flash player

Grundgerüst der Animation

Das Grundgerüst einer Animation (myTween), die auf ein Objekt myRect angewendet wird, kann in MXML auf folgende Weise definiert werden:

XML:
  1. :Declarations>
  2.           :Animate id="myTween" target="{myRect}">
  3.            
  4.           :Animate>
  5. :Declarations>

MotionPath und KeyFrame

Um den Verlauf der Animation zu steuern, müssen nun Keyframes festgelegt werden. Keyframes definieren den Wert einer Eigenschaft (z.B. x-Position, Breite, etc.) zum einem bestimmten Zeitpunkt der Animation. Die Werte dazwischen werden von der Tween-Engine interpoliert. Mehrere Keyframes werden zu einem MotionPath zusammengefasst. Eine Animation kann wiederum mehrere Motion-Pfade haben, wodurch mehrere Eigenschaften gleichzeitig animiert werden können.

Beim folgenden Beispiel wird die Breite des Objekts bei 300ms auf 200% vergrößert, bei 600ms auf 20% verkleinert und zuletzt bei 700ms wieder auf die ursprüngliche Breite skaliert.

XML:
  1. :MotionPath property="width">
  2.     :KeyFrame time="300" value="200" />
  3.     :KeyFrame time="600" value="20" />   
  4.     :KeyFrame time="700" value="100" />   
  5.  :MotionPath>

Quellcode

Der komplette Quellcode des oben gezeigten Beispiels lautet:

XML:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. :Application
  3.    xmlns:fx="http://ns.adobe.com/mxml/2009"
  4.    xmlns:s="library://ns.adobe.com/flex/spark"
  5.    xmlns:mx="library://ns.adobe.com/flex/halo">
  6.      
  7.    :Declarations>
  8.    
  9.       :Animate id="myTween" target="{myRect}">
  10.          :MotionPath property="width">
  11.              :KeyFrame time="300" value="200" />
  12.              :KeyFrame time="600" value="20" />   
  13.              :KeyFrame time="700" value="100" />   
  14.           :MotionPath>
  15.          
  16.          :MotionPath property="rotation">
  17.              :KeyFrame time="1000" value="0" />           
  18.              :KeyFrame time="1500" value="360" />           
  19.           :MotionPath>   
  20.          
  21.          :MotionPath property="x">
  22.              :KeyFrame time="50" value="400" />           
  23.              :KeyFrame time="2000" value="150" />           
  24.           :MotionPath>           
  25.                
  26.       :Animate>
  27.      
  28.    :Declarations>
  29.    
  30.    :Button
  31.       id="myButton"
  32.       label="Animation starten"
  33.       click="myTween.play()"
  34.       width="150" height="30"/>
  35.      
  36.      
  37.     :Rect id="myRect" width="100" height="100" x="150" radiusX="10" radiusY="10">
  38.             :fill>
  39.                 :SolidColor color="0xE3004E" />
  40.             :fill>
  41.         :Rect>       
  42.    
  43. :Application>

Mehr zu Flex 4: „Gumbo-Wochen” auf www.video-flash.de