我用 Java 构建了一个简单的“乒乓球”2D 游戏。
游戏使用 Swing 计时器,每 5 毫秒触发一次并触发 actionPerformed 方法。
此方法通过更改 x 和 y 坐标并重新绘制屏幕来“移动”(每 5 毫秒)屏幕上的项目。
大约一个小时前,游戏运行良好。然后我休息了一会儿,大约一分钟前回到了电脑前。
现在,当我运行游戏时,一切都变慢了。 (例如,屏幕上飞来飞去的“乒乓球”的移动速度不像以前那么快)。
可能是什么问题? (我认为没有必要提供代码,因为也许这种问题与代码无关,因为在问题开始发生之前代码没有改变。如果是请告诉我)。
编辑:一些代码:
在程序主对象的构造函数中:
timer = new Timer(40,this);
timer.start();
在主对象的actionPerformed中:
public void actionPerformed(ActionEvent e) {
bPaddle.move();
tPaddle.move();
ball.move();
checkCollision();
checkInScreen();
repaint();
}
程序中还有其他内容要添加到此处吗?
谢谢。
最佳答案
您应该尝试将重新计算和重绘分开。这样,无论您能达到的每秒帧数如何,您的乒乓球将始终(似乎)以相同的速度移动。
您需要做的一件事是计算计算新头寸所需的时间,并从重新计算之间等待的时间中减去该时间。
关于java - Java 游戏速度变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20819436/