0

すべてのマシンで同じように高速に見えるようにアニメーション(たとえば、SWTで位置が変化するコンポジット)を実装する通常の方法は何ですか?

素朴なアプローチは、タイムスタンプを使用して、次のアニメーションステップまで時間を停止することです。

もっと専門的な方法はありますか?

4

2 に答える 2

2

私はjavax.swing.Timer定期的にを使用しており、一貫性のあるアニメーションに最適です。あなたがしなければならないのは、を実装するクラスを実装することです(あなたはそれをあなたのFrameまたはにすることさえできますPanelActionListener

タイマーはactionPreformed(...)コンストラクターで指定された間隔で(または必要に応じて後で)メソッドを呼び出し、その間隔からすべての再描画を実行できますTimer。通常、これには、必要なオブジェクトの状態を更新し、関係するオブジェクトを呼び出すことがrepaint()含まれPanelます。

Timer必ず'sstart()メソッドを呼び出してください。それは私に多くの頭痛を引き起こしました!

于 2012-08-27T07:51:03.397 に答える
1

唯一のアプローチはタイムスタンプを使用することです。ナイーブなアプローチとプロのアプローチは、使用方法が異なります。

ナイーブなアプローチでは、スレッドとを使用しますThread.sleep()。専門的なアプローチでは、タイマーを使用して特定の間隔でコードを実行し、タイマーに遅延とジッターの処理方法を決定させます。

あなたはタイマーについてもっと学ぶことができます、クラスTimerとを見てくださいTimerTaskjava.util.Timer.scheduleAtFixedRate(TimerTask, Date, long)良いスタートになるはずです。コードは新しいスレッドで実行されるため、通常のツールを使用してUIスレッドのキューにイベントを挿入する必要があることに注意してください。

于 2012-08-27T07:41:29.360 に答える