gpt4 book ai didi

Java Swing 重/慢 paintComponent - 有什么建议吗?

转载 作者:行者123 更新时间:2023-11-29 05:21:35 28 4
gpt4 key购买 nike

我正在制作一款基于滚动 2D map /图 block 的游戏。每个图 block (存储为图 block [21][11] - 每个 map 总共 231 个图 block )最多可以包含 21 个值(存储为 int[3][7])。全屏时,我一次可以看到大约 8 张 map 。

平均而言,绘制每张 map 大约需要 0.03 秒(通过 System.nanoTime 找到)。问题是,一旦屏幕上显示超过 1 张 map ,Swing 事件轮询就会明显减慢。

有什么解决办法吗?我无法一次绘制 map 以将其保存为图像,因为它具有涉及移动 Actor 的透明度,因此它更改得太频繁了。此外,我认为我无法调用 paintComponent 中的线程来绘制 map 而不会出现故障,但我并不肯定。

最佳答案

My Tiles aren't any type of JComponent, they're just data. I call their container the MapPane, which draws all of the tiles in its paintComponent.

同样,JTable 单元格只是在 JComponent 中呈现的数据;享元模式,提到here , 仍然适用:目标是省略任何渲染不可见单元格的工作。 Profileself-time为了优化渲染;在引用 hereKineticModel 中检查了一些方法.

不需要缩放的 BufferedImage 是最好的。如果必须缩放,请尝试与插值类型相关的 RenderingHints。如果合成成本太高,请使用 SwingWorker 在后台构建 map ; publish() 它们变得可用,并在 EDT 上process() 它们,如图所示 here .

关于Java Swing 重/慢 paintComponent - 有什么建议吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24481823/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com