Java Swing“游戏循环”最佳实践
为了清楚起见,我正在寻找用Java(使用Swing)实现“游戏循环”的最佳替代方案
目前,我正在使用以下设置,在JPanel
类中重写paintComponent()
来绘制这样的东西:
public void run() {
while (running) {
panel.update();
panel.repaint();
try {
sleep(SLEEP_TIME);
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
这种设置看起来很灵活,但移动的形状和图像有时会出现一两个像素的停顿。换句话说,运动并不像我希望的那样平稳
我想知道是否有一种方法可以更有效地进行游戏循环,也就是说,可以避免动作中的口吃
# 1 楼答案
使循环速率固定的一种简单方法是使用
ScheduledExecutorService
另一种方法是根据睡眠时间计算自己的睡眠时间