0

学習演習として簡単なゲームに取り組んでいます。ゲームは四角形のグリッドで構成され、それぞれに背景画像があり、任意の数のオブジェクトとプレイヤー トークンを重ねて配置できます。現時点では、ボードは単なる JPanel であり、画像は paintComponent() メソッドで drawImage() を使用して描画されます。これは技術的には機能しますが、かなり扱いにくく、おそらく最善の方法ではありません。今、ボード全体を再描画せずに特定の正方形を再描画できるようにしたいのですが、元の実装が欠けているようです。

私が思いついた解決策は、正方形をカスタム アイコン クラスで表し、ボードをカスタム アイコンを含む GridLayout を持つ JPanel で表すことでした。問題は、最終的に、背景またはオブジェクトの画像の一部がアニメーション化され、四角形に複数のアニメーション化されたものがある可能性があることです。アニメーションGIFでこれをやろうと思っていました。

drawImage メソッドで ImageObserver を使用するとアニメーションが表示されることを読んだことを覚えていますが、Icon が ImageObserver のようには見えません。ボード JPanel を ImageObserver として使用するのは良い考えでしょうか? アニメーション GIF 以外に良い方法はありますか?

思いついたもう 1 つの解決策は、JLayeredPanes のグリッドと、適切な画像を重ね合わせた JLabels を使用することでしたが、何らかの理由で、それはハンマーでハエを叩いているように思えます。

4

2 に答える 2

2

コンテキストに応じて、javax.swing.Timerまたはのインスタンスを使用java.util.Timerしてアニメーションのペースを調整します。ここに示すようにアイコンを再描画するか、ここに示すようにアイコンを置き換えることができます

于 2013-10-21T00:07:28.240 に答える