Hype stammt von Branden Hall & Joshua Davis und ist ein Animations-Framework für Flash. Es ist mit AS3 geschrieben und ist auch für ActionScript-Einstieger leicht verständlich.

HYPE is a creative coding framework built on top of ActionScript 3. A major goal of HYPE is to allow newcomers to Flash and ActionScript to creatively play and express themselves while they are learning how to program. […] Now, that's not to say HYPE is just for people who are new to programming. Instead, HYPE is for anyone, regardless of skill, who wants to play with code.

Das Ausprobieren von Hype macht Laune, da es viel zu entdecken gibt. Man kommt schnell zu einem hübschen Ergebnis. Darüber hinaus stecken auch für Fortgeschrittene viele nützliche Klassen und Ansätze in Hype.

Animationsbeispiele

Hype bietet viele sehr unterschiedliche Helfer, um Objekte zu erzeugen, animieren oder zu verändern. Einige davon lassen sich in meiner Demo ansehen:
Hype-Demonstration anzeigen.

Die Demo zeigt beispielsweise, wie ein MovieClip mit zwei Zeilen dem Mauszeiger folgt.

Actionscript:
  1. var behaviour:MouseFollowEase = new MouseFollowEase(mein_mc, 0.1);
  2. behaviour.start();

Ein Timer, der in einem regelmäßigen Intervall eine Funktion aufruft, funktioniert ebenfalls mit nur zwei Zeilen. Im Beispiel wird damit jeweils ein neues Textfeld hinzugefügt.

Actionscript:
  1. // new timer
  2. var simpleRhythm:SimpleRhythm = new SimpleRhythm(addGridElement);
  3. simpleRhythm.start(TimeType.TIME, 400);

Mit einem ColorPool lassen sich Farben definieren, die alle Kindelemente eines Sprite einfärbt. In der Demo werden alle Textfelder ständig neu eingefärbt.

Actionscript:
  1. var colorPool:ColorPool = new ColorPool(0x26360B, 0x5D6204, 0xD2710B, 0xE43E15, 0xAE1609);   
  2. colorPool.colorChildren(textFieldContainer);

Das GridLayout erzeugt ein Gitter mit einer bestimmten Anzahl an Spalten und definierbaren Abständen. Fügt man diesem GridLayout ein DisplayObject hinzu, wird es automatisch an der richtigen Stelle platziert.

Actionscript:
  1. var gridLayout:GridLayout = new GridLayout(40, 40, 100, 20, 6);
  2. gridLayout.applyLayout(mein_mc);

Damit die Textfelder "vibrieren", ist auch nur ein Zweizeiler notwendig:

Actionscript:
  1. var sVibration:FixedVibration = new FixedVibration(mein_mc, "scale", 0.9, 0.1, 0.5, Math.random(), false);
  2. sVibration.start();

Die Animation der Textfelder beim Mausklick funktioniert so:

Actionscript:
  1. var ballistic:SimpleBallistic = new SimpleBallistic(mein_mc, Math.random() + 0.5, 2, 3, 0.25, 90);
  2. ballistic.start();

Quellcode am Stück

Actionscript:
  1. package {
  2.     import hype.extended.behavior.FixedVibration;
  3.     import hype.extended.behavior.MouseFollowEase;
  4.     import hype.extended.behavior.SimpleBallistic;
  5.     import hype.extended.color.ColorPool;
  6.     import hype.extended.layout.GridLayout;
  7.     import hype.framework.core.TimeType;
  8.     import hype.framework.rhythm.SimpleRhythm;
  9.  
  10.     import flash.display.Sprite;
  11.     import flash.events.MouseEvent;
  12.     import flash.text.TextField;
  13.     import flash.text.TextFormat;
  14.  
  15.     [SWF(backgroundColor="#ffffff", frameRate="50", width="640", height="480")]
  16.     public class Main extends Sprite {
  17.        
  18.         private var gridLayout:GridLayout = new GridLayout(40, 40, 100, 20, 6);
  19.         private var container:Sprite = new Sprite();
  20.         private var textFieldContainer:Sprite = new Sprite();      
  21.         private var colorPool:ColorPool = new ColorPool(0x26360B, 0x5D6204, 0xD2710B, 0xE43E15, 0xAE1609);   
  22.        
  23.         public function Main() {
  24.  
  25.             // put a container on the stage
  26.             addChild(container);
  27.             container.addChild(textFieldContainer);
  28.             textFieldContainer.x = -320;
  29.             textFieldContainer.y = -120;
  30.            
  31.             // mouse follow and click
  32.             mouseFollow();
  33.             this.stage.addEventListener(MouseEvent.CLICK, onClick);
  34.                
  35.             // new timer
  36.             var simpleRhythm:SimpleRhythm = new SimpleRhythm(addGridElement);
  37.             simpleRhythm.start(TimeType.TIME, 400);
  38.            
  39.         }
  40.  
  41.         private function onClick(evt : MouseEvent) : void {
  42.             trace ("click");
  43.             var tf:TextField = getTextField("Click");
  44.             tf.x = evt.stageX;
  45.             tf.y = evt.stageY;
  46.             addChild(tf);
  47.             var ballistic:SimpleBallistic = new SimpleBallistic(tf, Math.random() + 0.5, 2, 3, 0.25, 90);
  48.             ballistic.start();
  49.         }
  50.  
  51.         public function addGridElement(evt:SimpleRhythm) : void {
  52.             var tf:TextField = getTextField("Hype");
  53.  
  54.             // apply color 
  55.             colorPool.colorChildren(textFieldContainer);
  56.            
  57.             // vibration
  58.             var sVibration:FixedVibration = new FixedVibration(tf, "scale", 0.9, 0.1, 0.5, Math.random(), false);
  59.             sVibration.start();    
  60.                    
  61.             // apply layout 
  62.             gridLayout.applyLayout(tf);
  63.             textFieldContainer.addChild(tf);               
  64.         }
  65.  
  66.  
  67.         public function mouseFollow():void {
  68.             var behaviour:MouseFollowEase = new MouseFollowEase(container, 0.1);
  69.             behaviour.start();           
  70.         }
  71.        
  72.        
  73.         public function getTextField(label:String):TextField {
  74.             // new Textfield
  75.             var textField:TextField = new TextField();
  76.             textField.text = label;
  77.             textField.width = 100;
  78.  
  79.             // format
  80.             var format:TextFormat = new TextFormat();
  81.             format.font="Courier";
  82.             format.bold=true;
  83.             format.size = (Math.random()  * 40) + 8;           
  84.             textField.setTextFormat(format);
  85.            
  86.             return textField;         
  87.         }
  88.  
  89.        
  90.        
  91.     }
  92. }

Zahlreiche weitere interessante Demos und Möglichkeiten findet man auf der Hype-Webseite.

Link: Beispiel ansehen
Link: hype.joshuadavis.com/