複数のアニメーションを連続させる

(section05-03 座標移動のアニメーションから抜粋)

 次のサンプルでは、トゥイーンアニメーションの関数を配列motionListに入れておき、トゥイーンが完了したならばmotionListから順に次の関数を取り出して実行します。トゥイーンの関数には右へトゥイーンするmoveRight()、左へトゥイーンするmoveLeft()、180度回転するturn()の3つの種類の関数があります。これを9行目で示すように[moveRight,turn,moveLeft,turn]の順でmotionListに入れます。そしてnextMotion()でmotionListから関数を順に取り出して実行していきます。36行目ではmotionListから取り出した関数は変数motionに入れていますが、motion()と実行することで取り出した関数を実行できます。

 トゥイーンアニメーションのそれぞれの関数では、実行したトゥイーンが完了したならばnextMotion()を呼び出すようにTweenEvent.MOTION_FINISHイベントのリスナー関数を登録します。moveRight()、moveLeft()、turn()で毎回新しくtwObjインスタンスを作成するので、そのつどにTweenEvent.MOTION_FINISHイベントのリスナー関数を登録しなければなりません。

fig05-03-04_shiji.jpgswfを試す

[:script:]複数のトゥイーンアニメーションを連続して再生する
//利用するクラスをインポート
import fl.transitions.Tween;
import fl.transitions.easing.Regular;
import fl.transitions.TweenEvent;
var twObj:Tween;
var mc:MovieClip=box_mc;
var d:int=200;
//アニメーションで使う関数の配列
var motionList:Array=[moveRight,turn,moveLeft,turn];
var motionNo:uint;

moveRight();
//右へ移動
function moveRight():void {
	twObj=new Tween(mc,"x",Regular.easeInOut,mc.x,mc.x+d,1,true);
	twObj.addEventListener(TweenEvent.MOTION_FINISH, nextMotion);
}
//左へ移動
function moveLeft():void {
	twObj=new Tween(mc,"x",Regular.easeInOut,mc.x,mc.x-d,1,true);
	twObj.addEventListener(TweenEvent.MOTION_FINISH, nextMotion);
}
//180度回転する
function turn() {
	twObj=new Tween(mc,"rotation",Regular.easeInOut,mc.rotation,mc.rotation+180,1,true);
	twObj.addEventListener(TweenEvent.MOTION_FINISH, nextMotion);
}
//次のモーションに移行する
function nextMotion(eventObj:TweenEvent):void {
	if (motionNo<motionList.length-1) {
		motionNo++;
	} else {
		motionNo=0;
	}
	//実行する関数を選ぶ
	var motion:Function=motionList[motionNo];
	//選んだ関数の実行
	motion();
}
まったく新しいAS3の世界!
694a.jpg
Adobe Flash CS4
詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

楽しいActionScript。
新たなる1歩へと踏み出しましょう。
■内容は?→ 目次を見る
■評判は?→ 書評を読む
この本を書いたわけ

このブログ記事について

このページは、oshigeが2009年7月 4日 16:22に書いたブログ記事です。

ひとつ前のブログ記事は「トゥイーンの完了を待つ」です。

次のブログ記事は「トゥイーンの逆再生を行う」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ