forked from: Hello, BetweenAS3!

by onedayitwillmake
♥0 | Line 71 | Modified 2009-05-10 21:31:12 | MIT License
play

ActionScript3 source code

/**
 * Copyright onedayitwillmake ( http://wonderfl.net/user/onedayitwillmake )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/2KfY
 */

// forked from beinteractive's Hello, BetweenAS3!
package
{
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	import flash.events.MouseEvent;
	import org.libspark.betweenas3.BetweenAS3;
	import org.libspark.betweenas3.tweens.ITween;
	import org.libspark.betweenas3.easing.*;
	
	public class Sample extends Sprite
	{
		public function Sample()
		{
			// Create character fields
			var characters:Array = getCharacters('Hello, BetweenAS3!');
			
			// Create each character tween
			var cl:uint = characters.length;
			var ctweens:Array = new Array(cl);
			for (var i:uint = 0; i < cl; ++i) {
				ctweens[i] = BetweenAS3.tween(characters[i], null, {y: -30}, 0.8, Back.easeOutWith(2.2), 1.0 + 0.2 * i);
			}
			var ctween:ITween = BetweenAS3.parallel.apply(null, ctweens);
			
			// Create go and back tween
			_t = BetweenAS3.serial(
				ctween,
				BetweenAS3.func(null, null, 1.5), // means Wait (because there is no wait command yet)
				BetweenAS3.reverse(ctween)
			);
			
			
			// Set to be never stop
			_t.stopOnComplete = false;
			
			// Start the tween
			_t.play();
			
			// MouseUp listener
			stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
		}
		
		private var _t:ITween;
		
		private function mouseUpHandler(e:MouseEvent):void
		{
			// Stop the tween if playing
			if (_t.isPlaying) {
				_t.stop();
			}
			// Start the tween if stopping
			else {
				_t.play();
			}
		}
		
		private function getCharacters(text:String):Array
		{
			var l:uint = text.length;
			var result:Array = new Array(l);
			var format:TextFormat = new TextFormat('Arial', 24, 0x000000, true);
			var textHeight:Number = 0;
			var totalWidth:Number = 0;
			var i:uint;
			var tf:TextField;
			for (i = 0; i < l; ++i) {
				tf = new TextField();
				tf.defaultTextFormat = format;
				tf.autoSize = TextFieldAutoSize.LEFT;
				tf.text = text.charAt(i);
				tf.x = totalWidth;
				textHeight = Math.max(textHeight, tf.textHeight);
				totalWidth += tf.textWidth + 2;
				result[i] = tf;
			}
			var offsetX:Number = (stage.stageWidth - (totalWidth - 2)) / 2;
			var offsetY:Number = (stage.stageHeight - textHeight) / 2;
			for (i = 0; i < l; ++i) {
				tf = result[i] as TextField;
				tf.x += offsetX;
				tf.y += offsetY;
				addChild(tf);
			}
			return result;
		}
	}
}