0

我正在开发一个简单的游戏作为学习练习。游戏由一个方格组成,每个方格都有一个背景图像,并且可以包含任意数量的对象和玩家令牌,这些对象和玩家令牌相互叠加。目前,板子只是一个JPanel,图像是使用paintComponent()方法中的drawImage()绘制的。这在技术上是可行的,但它相当笨拙,可能不是最好的方法。现在,我希望能够在不重新粉刷整个板的情况下重新粉刷给定的正方形,看来我最初的实现是缺乏的。

我想出的解决方案是让正方形由自定义图标类表示,而板由 JPanel 和包含自定义图标的 GridLayout 表示。问题是最终,一些背景或对象图像将被动画化,并且一个正方形上可能有多个动画物体。我在想我会用动画 GIF 来做这件事。

我记得读过在 drawImage 方法中使用 ImageObserver 会导致动画出现,但它看起来不像 Icon 是 ImageObserver。使用板 JPanel 作为 ImageObserver 是个好主意吗?除了动画 GIF,还有更好的方法吗?

出现的另一个解决方案是 JLayeredPanes 网格,其中 JLabels 包含相互分层的适当图像,但出于某种原因,这似乎就像用大锤敲打苍蝇一样。

4

2 回答 2

2

Depending on context, use an instance of javax.swing.Timer or java.util.Timer to pace the animation. You can repaint the icon, as shown here, or replace the icon, as shown here.

于 2013-10-21T00:07:28.240 回答
1

也许动画图标会给你一些想法。

于 2013-10-21T02:27:20.730 回答