(section05-02 座標移動のアニメーションから抜粋)
次のサンプルでは5個のインスタンスがサイン波を描きながらステージを右から左へ横切ります。実際には最初の1個だけがサイン波を描いて動き、残りのインスタンスは1つ前のインスタンスを追いかけています。各インスタンスは前との間隔を少しずつ詰めるようにしてあり、アルファ値も少しずつ薄くしてあるので残像のように見えます。
1個目のインスタンスはステージの右端まで来たら左端に戻ります。他のインスタンスも遅れてそれに追従します。インスタンスをサイン波を描いて動かせるためにY軸座標をMath.sin()で縦の振幅運動にしておき、X座標は5ピクセルずつ加算してステージを横切るようにしています。
#ステージ右まで行ったball_mcの5個がすべて右に抜け、左から出てくるようにするにはどうしたらいいでしょう?ぜひ、自分で考えてみてください。
→swfを試す
次のサンプルでは5個のインスタンスがサイン波を描きながらステージを右から左へ横切ります。実際には最初の1個だけがサイン波を描いて動き、残りのインスタンスは1つ前のインスタンスを追いかけています。各インスタンスは前との間隔を少しずつ詰めるようにしてあり、アルファ値も少しずつ薄くしてあるので残像のように見えます。
1個目のインスタンスはステージの右端まで来たら左端に戻ります。他のインスタンスも遅れてそれに追従します。インスタンスをサイン波を描いて動かせるためにY軸座標をMath.sin()で縦の振幅運動にしておき、X座標は5ピクセルずつ加算してステージを横切るようにしています。
#ステージ右まで行ったball_mcの5個がすべて右に抜け、左から出てくるようにするにはどうしたらいいでしょう?ぜひ、自分で考えてみてください。
//初期値設定
var offsetY:Number=200;
var deg:uint=0;
ball5_mc.x=ball4_mc.x=ball3_mc.x=ball2_mc.x=ball_mc.x=100;
ball5_mc.y=ball4_mc.y=ball3_mc.y=ball2_mc.y=ball_mc.y=offsetY;
ball2_mc.alpha=0.8;
ball3_mc.alpha=0.6;
ball4_mc.alpha=0.4;
ball5_mc.alpha=0.2;
//イベントリスナーの設定
addEventListener(Event.ENTER_FRAME, onEnterframe);
//フレーム再生イベントのリスナー関数
function onEnterframe(eventObj:Event):void {
//10度ずつ進める
deg = (deg+10)%360;
//振幅100のサイン波
ball_mc.y=offsetY-100*Math.sin(deg*Math.PI/180);
//座標移動
if ((ball_mc.x-ball_mc.width/2)>stage.stageWidth) {
//ステージの外に出たら反対側に左に戻す
ball_mc.x=- ball_mc.width/2;
} else {
//右へ進む
ball_mc.x+=5;
}
//1つ前のインスタンスを追いかける
ball2_mc.x += (ball_mc.x - ball2_mc.x)/3;
ball2_mc.y += (ball_mc.y - ball2_mc.y)/3;
ball3_mc.x += (ball2_mc.x - ball3_mc.x)/3;
ball3_mc.y += (ball2_mc.y - ball3_mc.y)/3;
ball4_mc.x += (ball3_mc.x - ball4_mc.x)/3;
ball4_mc.y += (ball3_mc.y - ball4_mc.y)/3;
ball5_mc.x += (ball4_mc.x - ball5_mc.x)/3;
ball5_mc.y += (ball4_mc.y - ball5_mc.y)/3;
}




![ActionScript 3.0辞典 [FlashPlayer10/9対応]](http://ecx.images-amazon.com/images/I/51ry2e8HtIL._SL75_.jpg)



