0

我只是在玩一个小游戏来获得更多的java经验。包含所有视觉内容的面板有一个二维数组作为基于瓷砖的景观的网格,我喜欢草、树和水。为了在正确的图块上正确绘制正确的图片,需要大量的 if 语句等。它看起来不太好,所以我将水瓦的所有 if 语句(确定它是北海岸还是海洋等)移到他们自己的方法中,但我注意到它在我尝试时减慢了很多移动我的角色。我意识到每次移动时都重新绘制背景是愚蠢的,因为它几乎保持不变。那么,我怎样才能只绘制背景并保留它,但仍然在角色以合理的速度在面板上移动时为角色重新绘制精灵?

4

2 回答 2

0

将 JPanel 与背景图像一起使用。将面板设置为 GridLayout 并将 JLabels 添加到每个网格。然后您可以使用标签的 setIcon(...) 方法将播放器从一个网格移动到另一个网格。所以基本代码是:

oldLabel.setIcon(null); 新标签.setIcon(...);

现在 Swing 将只重绘两个已更改的网格方块。

于 2011-04-05T03:31:14.013 回答
0

我也遇到过类似的情况,我只是想在股票图表上移动一条注册线,而不需要为该线的新位置重新绘制股票图表。

答案是使用缓冲图像。在图像上绘制静态部分,将其存储为屏幕外图像,然后在每次您希望在图像上绘制移动对象时调用以筛选它。它很容易实现,而且效果很好。

希望这可以帮助。

约翰·R·多纳

于 2011-04-05T03:24:06.657 回答