2012-05-11 3 views
2

Javaでアニメーションを行いたい。私が見てきました:http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.htmlアニメーションを行う「Java」方法

私はあることで驚いているという、タイマーのアクションハンドラで:私たちは実際には関数呼び出しを描画しないでください

  • 。これは私にはやや奇妙に思える私たちは再描画要求
  • スイングは、その利便性

でその要求を再描画します

  • ので、タイマーのアクションは、「シミュレーション」のために使用されて表示されます - 私たちは状態を更新します:
  • (複数の再描画が1になるので)私はタイマーでFPSを数えていた場合

    • スイングが1
    • に複数の再描画要求を照合することができ、私はカウントを超えることができ

    質問:私はサンプルコードを読んでいませんか、これはJavaでアニメーションを行う「正しい」方法ですか?

    ありがとうございます!

    答えて

    5

    状態の更新とレンダリングを別々に行うのはかなり普通です。

    この点については、Java/Swingはかなり正常です。

    理由:物事の

    • ロットは、状態(タイマーイベント、ユーザの入力など)を更新することができますので、それはあなたがどんなでそれらを行うことができるように変更が非常に軽量にすると、画面が更新さからそれらを分離するために便利です時間
    • モデルの状態の更新とは異なる速度で画面の更新を実行することがよくあります。通常、アニメーション/状態の更新には一定の間隔が必要ですが、できるだけ早く画面を更新する必要があります。これは、アニメーションで補間を行う場合に特に当てはまります。
    • レンダリングは、特定のコンテキスト(この場合はSwing UIスレッド)で行う必要があることがよくあります。このコンテキストでのみ発生するように状態の変更を制限する必要はありません。
    • データモデルとビュー(画面プレゼンテーション)を分離することをお勧めします。優れた概念設計上の違いとは別に、ディスプレイとは独立してデータモデルをテストしたり、GUIなしでモデルをサーバー上で実行したりすることができます。
    2

    「アニメーション」の場合、 JavaFXは、主にこの目的のために構築されているため、Javaよりも優れています。

    +1

    あなたがやろうとしていることに依存します - JavaFX 2.0は確かに素晴らしいですが、Swingはまだ単純なアニメーションでは問題ありません。そしてそれは余分な依存関係を引っ張らないという利点があります..... – mikera

    +0

    あなたの答えはより役に立ちます。私は残念ながら、他の人が技術的に元の質問によく答えるので、投票を受け入れるのではなく、投票することができます。 – user1383359

    +0

    @mikera:もちろん、私はあなたに同意する必要があります:) –

    0

    Tridentを試してみるとよいでしょう。 Swingでアニメーションをしようとすると、たくさんの鐘や笛がなく、あなたの人生が楽になります。

    関連する問題