Tweenクラスを使う
とある仕事の話をしていて教えてもらいました、Tweenクラスのことを。Tweenクラスの説明は便利なページがあったのでリンクを載せておきます。
- Flashドキュメンテーション コンポーネントリファレンスガイド > Tween クラス
- 第21回 Tweenクラスを使えばインスタンスを簡単に動かせる | 日経 xTECH(クロステック)
- 第22回 Tweenクラスのさらに便利な使い方 | 日経 xTECH(クロステック)
- FN0509005 - Tweenインスタンスにイベントハンドラを設定するとエラーになる - Flash : テクニカルノート
こういう機能をActionScriptのデフォルトクラスとして提供していることをしらないと、探すことすらしなくて、普通に自前で実装してしまっていましたよ。
まぁ、普通のプログラマなら実装はそんなに難しくもないけど、ease in/ease out みたいな動きってノウハウが必要な部分が多いし、ちょっとした動きならこれを使えばいいですね。
テストしてみました。
1フレームのフラッシュで、aEnvと名づけたムービークリップを配置し、以下のムービークリップアクションスクリプトを書きます。
onClipEvent (load) { var test:Number = 0; }
また、以下のスクリプトを1フレ目のフレームスクリプトに書き込みます。
import mx.transitions.Tween; import mx.transitions.easing.*; var aEnvTween:Tween = new Tween( _root.aEnv, "test", // 変化させるパラメータ. Regular.easeInOut, // アニメーションの種類. 10, // 開始値. 300, // 終了値. 30, // 時間(frameか秒) false); // 上記時間の単位 (true:秒、false:frame) aEnvTween.onMotionChanged = function (){ trace( "anim "+this.time+"/"+this.duration); trace( " test :"+_root.aEnv.test ); } aEnvTween.onMotionFinished = function (){ trace("env done."); }
これで実行すると以下のようにtrace出力され、任意のパラメータを変化させることが出来、また毎フレームの処理、アニメーション完了時の処理の実装手順が把握できました。
anim 1/30 test :10.6444444444444 anim 2/30 test :12.5777777777778 .. anim 30/30 test :300 env done.