我只是在玩一个小游戏来获得更多java体验。包含所有视觉材料的面板有一个二维数组作为基于图块的景观的网格,我喜欢草,树木和水。为了在正确的图块上正确绘制正确的图片,需要大量的if语句等。它看起来不太好看,所以我把所有if水声的声明(确定它是北海岸,还是海洋等等)移动到他们自己的方法中,但我注意到它放慢了很多,因为我试过移动我的角色。我意识到每次移动时重新绘制背景都是愚蠢的,因为它几乎保持不变。那么我怎样才能只绘制背景并将其留在那里,但是当他以合理的速度在面板上移动时仍然重新绘制角色的精灵?
答案 0 :(得分:0)
我遇到了类似的情况,我只是想在一个股票图表中移动一条注册线,而不重新绘制该线的新位置的股票图表。
答案是使用缓冲图像。在图像上绘制静态部分,将其存储为屏幕外图像,然后在每次要在图像上绘制移动对象时调用它进行屏幕显示。它实现起来相当容易,效果很好。
希望这有帮助。
John R. Doner
答案 1 :(得分:0)
将JPanel与您的背景图片一起使用。将面板设置为GridLayout并将JLabel添加到每个网格。然后你可以使用标签的setIcon(...)方法将你的播放器从网格移动到网格。所以基本代码是:
oldLabel.setIcon(空); newLabel.setIcon(...);
现在,Swing将重新绘制仅重新绘制的两个网格方块。