在Java2D中绘制要子类化的组件(用于2D游戏)

|| 我创建了自己的画布,该画布是从JPanel扩展而来的,但是我注意到带有内容等内容的东西,使我的FPS突然受到了打击。我遵循Filthy Rich Clients的挥杆规则,方法是使用paintComponent,创建剪辑区域,仅重绘已更改的内容,依此类推。我将FPS设置为恒定的50 FPS,并且我注意到有时我的FPS会跳到31/32 FPS,然后又回升到50,依此类推。在运行程序时,即使渲染,它也仅使用约25MB的RAM和0的CPU。我也有OpenGL集。 注意:我没有图像,这是严格使用图形中的形状的。 在JPanel上绘制所有内容是否会对性能产生重大影响?我是否应该扩展其他组件(我不断看到Canvas组件)?在JPanel中构建诸如俄罗斯方块(或其他复古游戏)之类的游戏如何“智能”? 这可能是计时器问题,因为我刚刚添加了100个额外的绘画调用,而FPS仍然执行50个32/31任务。
已邀请:
经过大量调查,我发现问题根本不是JPanel。实际上,问题出在Java中的Timer。它不是100%准确的,导致FPS偏离了目标。我解决此问题的方法是阅读以下内容:koonsolo.com/news/dewitters-gameloop
我了解到您发现Timer类存在问题,但是我还有另一条建议对您有用,您可能会发现它有用: 您没有提到您是否正在使用双缓冲技术。如果不是,那么您可能会注意到FPS的改进。 万一您不熟悉该技术,它涉及创建一个单独的面板缓冲区,在此缓冲区上重新绘制场景,然后在屏幕上切换该缓冲区,以此类推。

要回复问题请先登录注册