java - Java 游戏速度变慢

标签 java swing timer

我用 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/

相关文章:

java - 如何在Java中以日期格式减去日期

java - 如何从 DOM 元素捕获 Java 字符串?

Java - 整数输入的累积和在 while 循环中不起作用

java - 如何在 native Activity 中显示软键盘

swing - Qt 与 Swing : Similarities and Disimilarities?

android - hrtimer 的触发时间比我设定的要早

java - 有没有办法只接受 JTextField 中的数字值?

java - 构造函数中传递的参数 - Java

c - 使用 Microblaze 设置计时器?

c++ - 定时器超时复位