mod027 画像の収束する拡大縮小運動

2008.1.14公開

flashPlayer version6.0r65以降

ActionScriptの制御によって画像の拡大と縮小を繰り返します。
画像は徐々に拡大と縮小の度合いを小さくしながら、最終的には等倍にて静止します。

//text_mcは拡大縮小するインスタンス名
var max_scale:Number = 1.1;//最大時スケール
//最大時スケールが3倍の場合は最小時は1/3とする

var repeat_num:Number = 6;//拡大縮小繰り返し数
var duration_num:Number = 10;//画像サイズ変更処理呼び出し間隔(msec)
var next_scale:Number;//次の目標スケール(%)
var now_num:Number;//現在が何回目の繰り返しか
var scale_duration:Number = 3;//何パーセントずつ増減させるか

var intervalId:Number;//setInterval 関数用識別変数

//インスタンスクリック時関数
text_mc.onPress = function():Void{
//前回のインターバル関数設定をクリア
if( intervalId != null)clearInterval( intervalId);
now_num = 0;//繰り返し回数を0に
//次の目標値計算
next_scale = 100 / max_scale + (100 - 100 / max_scale) * (now_num / repeat_num);
intervalId= setInterval(_root, "scaleC", duration_num);
}

//サイズ変更用関数
function scaleC():Void{
if(next_scale < 100){//縮小中
if(text_mc._xscale < next_scale + scale_duration){//縮小終了
text_mc._xscale = text_mc._yscale = next_scale;

//次の目標スケールを取得
next_scale = 100 * max_scale - (100 * max_scale - 100 ) * (now_num / repeat_num);
return;
}
text_mc._xscale -= scale_duration;
text_mc._yscale = text_mc._xscale;
}
else if(next_scale > 100){//拡大中
if(text_mc._xscale > next_scale - scale_duration){//縮小終了
text_mc._xscale = text_mc._yscale = next_scale;

//次の目標スケールを取得
next_scale = 100 / max_scale + (100 - 100 / max_scale) * (now_num / repeat_num);

now_num++;//繰り返し回数増加
return;
}
text_mc._xscale += scale_duration;
text_mc._yscale = text_mc._xscale;
}
else{//拡大縮小終了
text_mc._xscale = text_mc._yscale = 100;
clearInterval( intervalId );//関数繰り返し終了
intervalID = null;
}
}

ダウンロード
サンプル