2009-05-30 10 views
5

MovableClips/Spriteオブジェクトを可能な限りスムーズにアニメーション化したい。しかしこれまでのところ、動作するコードはEnterFrameイベントハンドラに配置されていました。このアプローチには1つの問題があります。特定のマシンのフレームレートが目的のフレームレートを下回ると、ゲーム全体が遅くなります。私は時間に依存しない方法でこれを行うことができるようにしたい。ここでActionScript 3:スムーズなプログラムアニメーション

答えて

12

Flash Playerでプログラムアニメーションを行うには、2通りの方法があります。最初にonEnterFrameを使用して指摘しました。ただし、既に気づいたことがあるように、滑らかなアニメーションを得るには、ムービーの全体的なフレームレートを上げる必要があります。これにより、SWFが実行されている期間全体のCPU負荷が増加します。これはあなたが常に望むものではありません。

プログラムによるアニメーションを行うもう1つの方法は、タイマーを使用することです。タイマーハンドラー内では、updateAfterEventという名前の関数を呼び出すことができます。この関数は、SWFに対して設定するFPSから独立して画面を更新します。したがって、タイマーを使用すると、SWFの全体的なフレームレートを上げることなく、Flash Player内で円滑なアニメーションを行うためのゲートウェイが残されます。

2年ほど前、私はFlashのための自分自身のトゥイーンライブラリを作成しました(利用可能な既存のトゥイーンライブラリの不満のために)。私はCoretweenの名前でリリースしました。このライブラリーでは、とりわけ、個々のトゥイーンごとに好みのアニメーションの種類を選択することができます。ドキュメンテーションページでは、フレームベースのアニメーションと時間ベースのアニメーションの違いをexampleで示しています。そのページのサンプルSWFは12fpsで動作しますが、下の円は60fpsのタイマーで制御され、SWFフレームレートに依存して画面が更新されるため、よりスムーズになります。実際には60fpsのタイマーでも、このフレームレートを達成することはできません。ただし、このフレームレートを達成しようとすると、全体的なアニメーションがよりスムーズになります。

これまでのところ、私はライブラリの1.0版をリリースできませんでしたが、かなり安定していることが分かりました。あなたは、それがあなたに合った方法でそれを使用することを歓迎する以上のものです。私はCoretweenを、オーストラリアのStGeorge銀行で行ったものを含め、多くの商用プロダクションで使用しました。

+0

恐ろしい!ちょうど私が必要なもの。私は受け入れて待っていますので、より多くのアップフォースを得ることができます:) – George

+0

ありがとうございます。答えが受け入れられれば、投票できる人もいます。 :) – Luke

+0

受け入れられた回答のない質問は、通常、より多くの注目を集めます。大部分のユーザーは、受け入れられた後、回答をアップアップしても構いません。 – George

2

はいくつかのActionScriptベースのアニメーションライブラリです:

TweenMax

Tweener

彼らの両方がうまく動作し、あなたが必要なもののお手伝いをする必要があります。

+0

私のオブジェクトをリアルタイムで滑らかに制御する必要があるため、残念ながらそうではありません。将来的にオブジェクトが希望の位置に到達することを時々保証するtweenerメソッドは、「うまくいかない」。 – George