我正在开发一个简单的游戏作为学习练习。游戏由一个方格组成,每个方格都有一个背景图像,并且可以包含任意数量的对象和玩家令牌,这些对象和玩家令牌相互叠加。目前,板子只是一个JPanel,图像是使用paintComponent()方法中的drawImage()绘制的。这在技术上是可行的,但它相当笨拙,可能不是最好的方法。现在,我希望能够在不重新粉刷整个板的情况下重新粉刷给定的正方形,看来我最初的实现是缺乏的。
我想出的解决方案是让正方形由自定义图标类表示,而板由 JPanel 和包含自定义图标的 GridLayout 表示。问题是最终,一些背景或对象图像将被动画化,并且一个正方形上可能有多个动画物体。我在想我会用动画 GIF 来做这件事。
我记得读过在 drawImage 方法中使用 ImageObserver 会导致动画出现,但它看起来不像 Icon 是 ImageObserver。使用板 JPanel 作为 ImageObserver 是个好主意吗?除了动画 GIF,还有更好的方法吗?
出现的另一个解决方案是 JLayeredPanes 网格,其中 JLabels 包含相互分层的适当图像,但出于某种原因,这似乎就像用大锤敲打苍蝇一样。