package { import flash.display.*; import flash.text.*; import caurina.transitions.Tweener; /** * Playing around with Tweener * has only used TweenLite before * but seems to be kind of similar. * * I think I'll add in a little * colortransformations and stuff * but now it's time to get to bed. * * @author Tommislav * @version 0.1 */ public class TextFlow extends Sprite { public const TEXT:String = "wonderFL flow"; private var _arr:Array; private var _tf:TextFormat; public function TextFlow() { // write as3 code here.. init(); } public function init():void { _arr = new Array(); _tf = new TextFormat( "verdana", 40 ); _tf.bold = true; var tempWidth:Number = 0; // keep track of width for repositioning for ( var i:int = 0; i < TEXT.length; i++ ) { var letter:TextField = new TextField(); letter.autoSize = "left"; letter.text = TEXT.charAt(i); letter.setTextFormat( _tf ); letter.y = stage.stageHeight * .5 - letter.height * .5; tempWidth += letter.width; _arr.push( letter ); addChild( letter ); } // We need one more loop to reposition in x-axis var leftX:Number = 0; for ( i=0; i < _arr.length; i++ ) { _arr[i].x = stage.stageWidth * 0.5 - tempWidth * 0.5 + leftX; leftX += _arr[i].width; moveAgain( _arr[i] ); } } private function moveAgain( txt:TextField ):void { var x:Number = Math.random() * 60 - 30; var y:Number = Math.random() * 60 - 30; var rX:Number = Math.random() * 90 - 45; var rY:Number = Math.random() * 90 - 45; var len:Number = Math.random() * 6 + 2; Tweener.addTween( txt, { x:txt.x + x, y:txt.y+y, rotationX:rX, rotationY:rY, time:len, transition:"easeInOutSine", onComplete:moveAgain, onCompleteParams:[txt] } ); } } } FlowText v 0.1