规避频繁的repaint()调用以基于图块的游戏

时间:2019-07-19 18:18:58

标签: java awt

我刚刚开始研究基于图块的模拟游戏(3D,但是图形全部是2D png /位图)。图形概念类似于例如。侏儒症。我设法使用Panel(AWT)的自定义子类来实现世界的图形化部分,该子类从左下角的最低层开始绘制多维数据集,然后逐步向上移动。这样,多维数据集的图像可以正确地放在一起,但是对于196 * 196 * 100的多维数据集大世界来说,绘制时间太长了。

现在,我要提供的方法是规避每次稍微改变一下整个世界的重绘。

我想我对单个顶层块的更改过程有了一个不错的主意,只需重新绘制可见面(顶部/左侧/右侧)即可,因此不必重新绘制以下所有多维数据集。但是我无法解决的问题是每当我移动屏幕时(即使用KeyListener移动世界时)重绘。我的第一个想法是只在面板中移动面板,但这并不能解决问题,因为如果我移动世界,它仍然会重绘所有内容。顺便说一句,我已经使用了硬件加速来加速:D事情,但是离目标还很遥远。

当前结果是面板移动,但是一旦有东西进入之前不在屏幕上的屏幕,它将重新绘制此部分。重新绘制的速度非常快,但又不够快,以至于不可见和令人不安。

0 个答案:

没有答案