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