我正在设计一个游戏,你可以到达屏幕的边缘,屏幕将转移到相同地图的新面板,类似于第一个塞尔达游戏。使用repaint()运行线程或者使用javax.swing.Timer并调用super.paintComponet会更好地工作哪种方法更高效或更有效?
答案 0 :(得分:1)
通常对于简单的动画,您可以使用javax.swing.Timer
但看起来您正在进入一个更复杂的游戏。如果您继续使用swing.Timer
并且如果执行代码的速度不够快,则可能会影响组件的绘制,从而导致UI无法响应。
您可以通过工作线程调用Thread.sleep(delay)
来构建游戏循环并根据您想要的帧速率进行渲染。记住不要在事件调度线程中运行它,否则您的UI也会变得无法响应。