package { import com.Aquioux.AqArray; import com.Aquioux.AqMath; import caurina.transitions.Tweener; public class MotionEngine { // -------------------- プロパティ -------------------- // -------------------- メソッド -------------------- // コンストラクタ public function MotionEngine() {} // モーション Order public static function motion( letters : Array , // 文字オブジェクト格納配列 x : Number , // mouseX y : Number , // mouseY sw : uint , // ステージ幅 sh : uint // ステージ高 ):void { // モーション開始順配列を作成する var orders:AqArray = new AqArray(); orders.createNumArray( letters.length , 0 ); // トゥイーンリムーブ(前回のトゥイーンが残っていたとき用) for each ( var item in letters ) { Tweener.removeTweens( item ); } // トゥイーン実行 doObjTween( letters , x , y , sw , sh , orders ); } // トゥイーン実行 private static function doObjTween( letters : Array , // 文字オブジェクト格納配列 x : Number , // mouseX y : Number , // mouseY sw : uint , // ステージ幅 sh : uint , // ステージ高 orders : Array // モーション開始順配列 ):void { // ランダム位置計算用 var padding : uint = 20; // トゥイーン開始 var idx:int = letters.length; while ( idx-- ) { // スケール計算 var scale:uint = AqMath.createRandomInt( 5 , 1 )*2; // トゥイーン Tweener.addTween( letters[idx] , { x : letters[idx].posx + x , y : letters[idx].posy + y , _scale : 1 , rotation : 0 , alpha : 1 , _bezier : { x : AqMath.createRandomInt( sw-padding , padding ) , y : AqMath.createRandomInt( sh-padding , padding ) , scaleX : scale , scaleY : scale , rotation : AqMath.createRandomInt( 180 , -180 ) , alpha : 1 / scale } , time : 2.5 , delay : 0.15 * orders[idx] , transition : "easeoutback" } ); } } } }