1. ホーム
  2. Blog
  3. Tweenerコード簡易ジェネレーター

Tweenerコード簡易ジェネレーター

寺井 周平

寺井 周平

お知らせ

tweenTypeViewer.PNG
「tweenTypeViewer」

tweener でも使われている PennerEasing ですが、個人的に、Back とか Elastic は動きがイメージできますが、Sine, Quad, Cubic, Quart, Quint, Expo(←この順番で強くなってくよ!Circ はまたちょっと別モノ) あたりの動きの差異、順番がなかなか覚えられなかったので簡易ビューアを作りました。

こちらのトゥイーンタイプ一覧表でもいいのですが、一応動きを目視確認できて、だいたいのコードをジェネレートでコピペできるというものぐさ君仕様。

ビューアのソース。ステージ上にインスタンス「ball」、テキストフィールド「tf」を置いておく。ComboBox コンポーネントをライブラリに入れておく。あと要 tweener ですね。

package  {
	import caurina.transitions.Tweener;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.events.Event;
	import fl.controls.ComboBox;
	import flash.text.TextField;
	
	public class TweenTypeViewer extends Sprite{
		private var cb:ComboBox;
		private var cb2:ComboBox;
		private var cb3:ComboBox;
		private var cbItem:Array = ["linear","easeIn", "easeOut", "easeInOut"];
		private var cb2Item:Array = ["Sine", "Quad","Cubic","Quart","Quint","Expo","Circ","Elastic","Back", "Bounce"];
		private var cb3Item:Array = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.5,2.0];
		private var easingType:String;
		private var easing:String;
		private var type:String;
		private var time:Number;
		public function TweenTypeViewer() {
			cb=new ComboBox();
			cb.x=10;
			cb.y=10;
			for (var i:uint=0; i<cbItem.length; i++) {
				cb.addItem( {label:cbItem[i]} );
			}
			addChild(cb);
			cb.selectedIndex = 0;
			cb.addEventListener(Event.CHANGE, checkBoxHandler);
			
			cb2=new ComboBox();
			cb2.x=120;
			cb2.y=10;
			for (var j:uint=0; j<cb2Item.length; j++) {
				cb2.addItem( {label:cb2Item[j]} );
			}
			addChild(cb2);
			cb2.selectedIndex = 0;
			cb2.rowCount = cb2Item.length;
			cb2.addEventListener(Event.CHANGE, checkBoxHandler);
			
			cb3=new ComboBox();
			cb3.setSize(50,24);
			cb3.x=230;
			cb3.y=10;
			for (var k:uint=0; k<cb3Item.length; k++) {
				cb3.addItem( {label:cb3Item[k]} );
			}
			addChild(cb3);
			cb3.selectedIndex = 4;
			cb3.rowCount = cb3Item.length;
			cb3.addEventListener(Event.CHANGE, checkBoxHandler);
			
			stage.addEventListener(MouseEvent.CLICK, clickListener);
			checkBoxHandler();
		}
		
		private function checkBoxHandler(event:Event = null):void {
			easing = cb.selectedItem.label;
			type = cb2.selectedItem.label;
			time = Number(cb3.selectedItem.label);
			if(easing!="linear"){
				cb2.visible = true;
				easingType = easing + type;
			}else {
				cb2.visible = false;
				easingType = easing;
			}
			tf.text = "Tweener.addTween(ball, { x:"+stage.mouseX+", y:"+stage.mouseY+", time:"+time+", transition:"+easingType+" } );";
		}
		
		private function clickListener(event:MouseEvent):void {
			Tweener.addTween(ball, { x:stage.mouseX, y:stage.mouseY, time:time, transition:easingType } );
		}
	}
}

以上、寺井でした。

トップへ戻る