我目前正在用 Java 制作路径铺设 Tile 游戏,我正在使用具有多层的 JLayeredPane。游戏运行良好,但每次调用 repaint 方法时,整个窗格都会闪烁。
现在我让游戏在计时器上运行,每个滴答声都会自动将角色沿着我布置的路径一次移动一个瓷砖。自然,我需要更新屏幕以将更改反映给用户,但问题是重绘方法会强制对 LayeredPane 的所有层进行重绘。每个滴答声都会导致屏幕地图区域闪烁。虽然它是可以忍受的,但我只想摆脱它,让它看起来更好。
我研究过双缓冲的使用,甚至将窗格的双缓冲选项设置为 true(例如 pane.setDoubleBuffered(true)),但对各种实现都没有运气。有没有一种方法可以为外部缓冲区中的每个刻度绘制带有所有图层的整个窗格,然后一次将其复制到主屏幕?
谢谢