2

ActionScript 3 でカード ゲームを作成しています。各カードは、Flash CS4 からエクスポートされたムービークリップを拡張するクラスのインスタンスによって表されます。このムービークリップには、カード グラフィックとフリップ アニメーションが含まれています。カードを裏返したいときは、このムービークリップで gotoAndPlay を呼び出します。

フレーム レートが遅くなると、すべてのアニメーションの終了に時間がかかります。Flash はデフォルトで、クリップ内のすべてのフレームが確実に描画されるようにムービークリップをアニメーション化するようです。そのため、プログラムのフレーム レートがクリップのフレーム レートを下回ると、アニメーションはより遅いペースで再生されます。

アニメーションを常に同じ速度で再生し、その結果、常に同じ時間画面に表示したいと考えています。フレーム レートが遅すぎてすべてのフレームを表示できない場合、フレームはドロップされます。この方法で Flash にアニメートするように指示することはできますか? そうでない場合、この動作を自分でプログラムする最も簡単な方法は何ですか?

4

3 に答える 3

1

最も簡単な方法は、1000/fps ミリ秒ごとにトリガーするTimer(または) を使用して、次のフレームに移動するように指示することです。setIntervalMovieClip

より正確な情報が必要な場合は、前回の更新以降にかかった時間を確認する必要があります ( Keith Peters のブログのこの記事の最初のコメントから盗んだもので、すべてをよく説明しています)。

于 2010-03-26T14:57:15.480 に答える
0

Flash を使用してからしばらく経ちましたが、Flash はフレーム ベースのアニメーション モデルを使用しているため、Flash は使用できないと理解しています。

ただし、Silverlight は時間ベースのアニメーション モデルを使用し、フレーム レートが許す限り多くの中間フレームを描画します。

于 2010-03-26T14:51:19.987 に答える
0

tween クラス ( fl.transitions.Tween) は、この状況に最適です。コンストラクターの最後の引数をTRUE次に設定することにより、アニメーション/トリガーを秒に基づいて設定し、私の知る限り、FPS の損失/利得を補正します。

新しいオブジェクト ( ) をコンストラクターに渡し、イベントをトリガーするTrigger(new Object(), "x"MOTION_FINISH ( ) のリスナーを作成することで、Timer クラスのように簡単に使用できます。TweenEvent.MOTION_FINISH

Tweens は簡単で、高速で、すべてに対応しているため、私は多くのことに Tweens を使用しています。そして、私が言ったように、FPS の変化にリアルタイムで適応するため、FPS/ラグの問題を解決するはずです (私の知る限り!)。

于 2010-11-30T23:52:29.717 に答える