2

我正在用 Java 编写一个基于网格自上而下视图的游戏。我对 JPanel paintComponent() 和 repaint() 方法不是很熟悉,并且在创建快速屏幕绘制功能时遇到了麻烦。每个图块都是一个带有 Tile.paintTile(g,x,y) 的对象,用于在 g 上的 (x,y) 处绘制图块。我想找到一种只绘制特定瓷砖的好方法,但是我不知道如何做到这一点。我有一个带有 TileAt(x,y) 的 World 类来获取瓷砖,但我所做的每一次尝试都会导致口吃或抛出错误。任何帮助表示赞赏!-Renmusxd

编辑:我试过的:我还不太习惯Java图形,我尝试覆盖paintComponent并添加paintComponent(g,x,y)但它不喜欢我不调用repaint。我不再拥有代码,因为我用paintAll 版本替换了它。对不起。

4

1 回答 1

1

通常,每次重新绘制整个屏幕会更容易——在大多数现代机器上使用 Swing 应该足够快。

如果你真的想做部分更新,那么最好的方法可能是:

  • 创建一个 offscreen BufferedImage,它应该与您的游戏显示区域大小相同(或者如果您想允许滚​​动,则稍微大一些)
  • 将您的图块绘制到此屏幕外图像中。
  • 当您重绘视图(即在paintComponent方法中)时,只需将整个缓冲图像一次性绘制到屏幕上。
于 2012-11-01T05:05:52.267 回答