2

グリッドのトップダウン ビューに基づく Java でゲームを作成しています。私は JPanel の paintComponent() メソッドと repaint() メソッドにあまり詳しくなく、高速なスクリーン ペインティング関数を作成するのに苦労しています。各タイルは、g 上の (x,y) でタイルをペイントする Tile.paintTile(g,x,y) を持つオブジェクトです。特定のタイルのみをペイントする良い方法を見つけたいのですが、これを行う方法がわかりません。タイルを取得するための TileAt(x,y) を持つ World クラスがありますが、試行するたびにスタッタリングまたはスローされたエラーが発生しました。どんな助けでも大歓迎です!-Renmusxd

編集:私が試したこと:私はまだJavaグラフィックスにあまり慣れていません.paintComponentを上書きしてpaintComponent(g、x、y)を追加しようとしましたが、再描画を呼び出さないのは好きではありません. paintAll バージョンに置き換えたため、コードはもうありません。ごめん。

4

1 に答える 1

1

通常、画面全体を毎回再描画する方が簡単です。これは、ほとんどの最新のマシンで Swing を使用すると十分に高速です。

本当に部分的な更新を行いたい場合は、おそらく次の方法が最適です。

  • offscreenBufferedImageを作成します。これは、ゲームの表示領域と同じサイズにする必要があります (スクロールできるようにする場合は、少し大きくする必要があります)。
  • このオフスクリーン イメージにタイルを描画します。
  • ビューを (つまりメソッド内で) 再描画するときは、paintComponentバッファリングされたイメージ全体を一度に画面に描画します。
于 2012-11-01T05:05:52.267 に答える