2011-05-19 4 views
0

皆さんが私を助けてくれるかどうか疑問に思っていました。私は、Javaのグラフィックスモジュールでアニメーションプログラムを作ろうとしています...事は、Javaはすべてを一度に実行します。さまざまなアニメーションの間に時間がありません。最終製品は最後の写真です。私は各写真の間に半分の時間を置く機能が必要です。Java待機関数

何か助けていただければ幸いです。

仕様:ブルー-J、JDK 6

編集:ところで、私は、Java初心者だし、これは、クラスのものです。割り当てはアニメーションを作り、 'c'を押して各フレームを進めることでしたが、それはちょっとゲットーだと思います。

答えて

4

Xミリ秒ごとに実行されるjavax.swing.Timerを作成し、トリガーされるたびに1つのフレームを描画します。

これはJavadocのからの例である:

int delay = 1000; //milliseconds 
    ActionListener taskPerformer = new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
      //...Perform a task... 
     } 
    }; 
    new Timer(delay, taskPerformer).start(); 

、例えばする、遅延を変更20ms。あなたの絵画があまりにも長くかかることがなければ、それは毎秒約50フレームを与えます。

+0

イムのjavaで巨大な初心者..しかし、これを試してみて、理解しようとしてイム..私はちょうどこの新しい機能行い、その後、アニメーションを作るwhileループに入れますか? –

+0

ああ、私はそれを見ていると思っています。だから、私は自分のループを "Preform a task"と書かれたコードブロックの中に入れます。 –

+0

アニメーションの作成にwhileループを使用するべきではありません。アニメーションの1つのフレームのみを描画するようにコードを変更する必要があります。上記のコードは描画を開始し、各描画は次のフレームを描画します。 – Kaj

0

多分単純な睡眠で十分でしょうか?

Thread.sleep(milliseconds); 
+0

アニメーションを扱うときに睡眠が正解であるとは思われません。 EDT/AWTスレッドをスリープ状態にするとUIがフリーズし、EDT/AWTスレッドはイベントを処理できなくなります。 – Kaj

+0

@styken GUIプログラミングについて話しているとき、この方法はひどい使い方であると私は忘れてしまった。詳細については、この投稿をご覧ください:http://stackoverflow.com/questions/25233881/why-wont-my-jframe-respond-to-mouse-and-window-changes/25234030#25234030 – nbro