我正在用Java编写一个基于网格自上而下视图的游戏。我不太熟悉JPanel paintComponent()和repaint()方法,我在创建快速屏幕绘制功能时遇到了问题。 每个图块都是一个具有Tile.paintTile(g,x,y)的对象,用于在g上的(x,y)处绘制图块。我想找到一种很好的方法来仅绘制特定的瓷砖,但是我无法找到如何做到这一点。 我有一个带有TileAt(x,y)的World类来获取tile,但是我所做的每一次尝试都会导致口吃或抛出错误。 任何帮助表示赞赏! -Renmusxd
编辑:我尝试过的: 我还不习惯Java图形,我尝试覆盖paintComponent并添加paintComponent(g,x,y),但它不喜欢我不调用repaint。我不再拥有代码,因为我用paintAll版本替换它。遗憾。
答案 0 :(得分:1)
通常每次重绘整个屏幕都比较容易 - 在大多数现代机器上使用Swing应该足够快。
如果您真的想要进行部分更新,那么最好的方法可能是:
BufferedImage
,其尺寸应与游戏显示区域相同(如果您想允许滚动,则略大一些)paintComponent
方法中),然后只需将整个缓冲图像一次性绘制到屏幕上。