我用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();
}
程序中还要添加其他任何内容吗?
感谢。
答案 0 :(得分:1)
你应该尝试分开重新计算和重绘。这样,无论你能达到的每秒帧数,你的乒乓球总是(似乎)移动速度相同。
你要做的一件事是,你需要多长时间来计算新的职位,并减去你在重新计算之间等待的时间。