forked from: forked from: TweensyでA→B→Cと順番にアニメーションさせたい

by nacookan forked from forked from: TweensyでA→B→Cと順番にアニメーションさせたい (diff: 37)
さらにいじってみる。用途限定ならTweensySequence使えばちょっとシンプル。
まったく同じ動きだと難しいなあ。ネストしちゃってる。
sp1→sp2→sp3 という風に TweensyTimeline の onComplete を使って順番に動かしています。
* 実際、順番に動いてはいるのですが、アニメーションさせるinstanceが増えれば増えるほど
* このようにネストしてしまうものなのでしょうか?
* それとも、もっとスマートに書くイカした方法があるのでしょうか?
* 詳しい方教えてください。
* よろしくお願いします。
* 
♥0 | Line 33 | Modified 2009-11-06 02:53:03 | MIT License
play

ActionScript3 source code

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

// さらにいじってみる。用途限定ならTweensySequence使えばちょっとシンプル。
// forked from nacookan's forked from: TweensyでA→B→Cと順番にアニメーションさせたい
// まったく同じ動きだと難しいなあ。ネストしちゃってる。
// forked from yasai's TweensyでA→B→Cと順番にアニメーションさせたい
	/* sp1→sp2→sp3 という風に TweensyTimeline の onComplete を使って順番に動かしています。
	 * 実際、順番に動いてはいるのですが、アニメーションさせるinstanceが増えれば増えるほど
	 * このようにネストしてしまうものなのでしょうか?
	 * それとも、もっとスマートに書くイカした方法があるのでしょうか?
	 * 詳しい方教えてください。
	 * よろしくお願いします。
	 * */
package {
	import flash.display.*;
	import flash.events.*;
	import com.flashdynamix.motion.*;
	import fl.motion.easing.*;
	import net.hires.debug.Stats;
	
    public class FlashTest extends Sprite {
        public function FlashTest() {
			addChild( new Stats() );
			init();
		}
		
		private function init():void 
		{
			//タダの丸 (addChildの戻り値は渡したオブジェクト自身なので一行で書ける)
			var sp1:Sprite = addChild(makeSp()) as Sprite;
			var sp2:Sprite = addChild(makeSp()) as Sprite;
			var sp3:Sprite = addChild(makeSp()) as Sprite;
			
			//(Tweensy.toの連続でよければ、TweensySequenceが使える)
			var seq:TweensySequence = new TweensySequence();
			seq.push(sp1, { x: '-230,230', y: '-230,230' }, 5, Quintic.easeOut, 0, 1); //(相対位置で乱数なら、カンマ区切りの文字列型で渡せば簡単に書ける)
			seq.push(sp2, { x: '-230,230', y: '-230,230' }, 5, Quintic.easeOut, 0, 1);
			seq.push(sp3, { x: '-230,230', y: '-230,230' }, 5, Quintic.easeOut);
			seq.start();
        }
		
		//sp作る
		private function makeSp():Sprite {
			var sp:Sprite = new Sprite();
			sp.graphics.beginFill(Math.random()*0xDDDDDD);
			sp.graphics.drawCircle(0, 0, 10);
			sp.graphics.endFill();
			sp.x = stage.stageWidth / 2;
			sp.y = stage.stageHeight / 2;
			return sp;
		}
    }
}

Forked