我正在制作一个基于滚动 2D 地图/图块的游戏。每个图块(存储为tile[21][11] - 每张地图总共 231 个图块)最多可以包含 21 个值(存储为 int[3][7])。当全屏显示时,我会同时看到大约 8 张地图。
平均而言,每张地图的绘制时间约为 0.03 秒(通过 System.nanoTime 发现)。问题是,一旦屏幕上出现超过 1 个地图,Swing 事件轮询就会明显变慢。
有什么办法解决这个问题吗?我无法一次性绘制地图并将其保存为图像,因为它具有涉及移动演员的透明度,因此它更改得太频繁。另外,我不认为我可以调用 PaintComponent 中的线程来绘制地图而不出现故障,但我并不肯定。
My Tiles
不属于任何类型JComponent
,它们只是数据。我称他们的容器为MapPane
,绘制其中的所有图块paintComponent
.
同样地,JTable
单元格只是在 a 内呈现的数据JComponent
;提到的蝇量模式here,仍然适用:目标是省略渲染不可见单元的任何努力。Profile and 自拍以优化渲染为目的;一些方法在KineticModel
cited here.
A BufferedImage
不需要缩放是最好的。如果必须扩展,请尝试RenderingHints
与插值类型有关。如果合成成本太高,请使用在后台构建地图SwingWorker; publish()
当它们变得可用时,并且process()
他们在 EDT 上,如图所示here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)