我正在写一个Java 2D视频游戏。我只使用Java2DAPI,所有的更新都是由一个更新计时器驱动的。我使用paintComponent()在JPanel中执行所有绘图,并对我读取的所有图形图像使用易失性图像,这将提高性能。
尽管如此,有时我的电子游戏还是开始疯狂地闪烁。整个屏幕开始闪烁。这个游戏是用Java6编写的,我在MacOSX10.10.1上运行。
有什么办法解决这个问题吗?
谢谢。
发布于 2015-01-03 00:25:56
根据这个post,您不应该直接调用paintComponent()。请尝试调用paint()。
编辑:对不起,我混淆了paintComponent()和paintComponents()。也许你可以展示一些代码?
发布于 2015-01-03 00:50:21
在主窗口/框架/面板上调用setDoubleBuffered(true)。或者绘制到另一个组件,并在准备好时切换。
闪烁是因为您在同一组件上快速重绘。在背景中重新绘制,然后快速切换到现在新绘制的图片就摆脱了这一点。这称为双缓冲。阅读更多here。
https://stackoverflow.com/questions/27745096
复制相似问题