1

私の最近のJavaの課題の1つ(高校のコース...)は、境界線が描かれ、ボールが画面の周りを移動して境界線で跳ねるアプレットを作成することです。Frapsをインストールしましたが、アプレットはわずか10 fpsでしか実行されていないため、アニメーションは非常に平凡に見えます。

アニメーションを描く私のオリジナルの方法:

  1. 私のメソッドを呼び出す:drawScreen()paint()
  2. から渡されるフレームレートのために一時Thread.sleep(1000/frameRate)停止しますdrawScreen()html
  3. 電話repaint()

これは素晴らしくうまく機能し、アプレットは夢のように動作しました...毎回画面を再描画してはいけないと書かれたグレーディングシートを見るまで(おそらく、コンピュータが異常に遅く、友人がアプレットがちらつき、目の不快感を引き起こし、至る所で多くの裂け目が発生します)、ボールを描画してから、同じ色の背景の別のボールを描画して覆い、座標を計算し、アプレットが終了します

これの問題はそれです

  • repaint()呼び出すことはできません
  • 私のアニメーションの上限は10fpsです
  • アプレットビューア、またはアプレット/ビューア内の他の何かをクリックして私に応答するために利用できるスレッドはありません。

使用せずにアニメーションを10fps以上で実行する方法はありrepaint()ますか?

4

2 に答える 2

3
  1. しないでください:
    1. Applet(/ JAppet)やFrame(/ )などのトップレベルのコンテナでカスタムアニメーションを実行しJFrameます。代わりに、カスタム図面をCanvas/PanelまたはJComponent/JPanelに入れてから、そのコンポーネントを最上位のコンテナに入れます。
    2. このミレニアムではAWTコンポーネントを使用してください。
    3. paint()Swingコンポーネントのオーバーライド-である必要がありますpaintComponent(Graphics)
  2. Thread.sleep(n)塗装糸には使用しないでください。代わりに、SwingTimerを使用してアクションを実行してください。
  3. を呼び出しrepaint()ます。
于 2011-11-01T04:55:02.420 に答える
0

ダブルバッファリングを実装するか、ダブルバッファリングされたブラウザでアプレットを実行する必要があることがわかりました。AppletViewerは、アニメーションを10 fpsに制限しました。これは、アプレットが自動的にバッファリングされず、その中でアプレットを実行していたためです。

于 2011-11-05T17:47:30.217 に答える