Java 如何将while循环的每个循环的速度设置为常量?

Java 如何将while循环的每个循环的速度设置为常量?,java,performance,while-loop,2d,game-physics,Java,Performance,While Loop,2d,Game Physics,我有一个while循环,它运行我正在开发的一个简单2d游戏的逻辑。在它里面,我有很多函数调用,它们的速度似乎在变化,这使得游戏中的球结巴了很多。我想试着让每个循环持续相同的时间来消除口吃 我曾试图限制不起作用的函数调用的数量,因为即使调用的数量最少,它仍然会结巴。 我也尝试过使用暂停来节省时间,但这只会让它变得更慢 private void turn() { Ball ball = new Ball(400, 500); add(ball);

我有一个while循环,它运行我正在开发的一个简单2d游戏的逻辑。在它里面,我有很多函数调用,它们的速度似乎在变化,这使得游戏中的球结巴了很多。我想试着让每个循环持续相同的时间来消除口吃

我曾试图限制不起作用的函数调用的数量,因为即使调用的数量最少,它仍然会结巴。 我也尝试过使用暂停来节省时间,但这只会让它变得更慢

 private void turn() {
        Ball ball = new Ball(400, 500);
        add(ball);

        pause(3000);

        while(ball.getCenterY() + ball.getRadius() <= CANVAS_HEIGHT){

            ball.updatePosition(1);

            wallPaddleCollision(ball);

            brickCollision(ball);

            if (numberOfBricks == 0) {
                System.out.println("You've Won!");
            }

            pause(1);
        }

        lives--;

        if(lives > 0) {
            remove(ball);
            turn();
        }
        else {
            loss();
        }
    }
...
More code in here.
...
}

它的运行应该比这更平稳。有什么建议吗?

这里有多个方面:

理想情况下,您的worker方法的编写方式不会在一次循环迭代中完成5件事情,然后在下一次循环迭代中完成5000件事情。它们应该相对稳定。 你不能加快速度。如果有的话,您可以在每个循环的开头和结尾获得System.currentTimeMillis。然后你可以确定这个循环有点太快了,所以人工在50毫秒内什么也不做。
嘿您需要了解游戏循环是如何工作的,以及不同类型的游戏循环。通过查看Java游戏循环的过去问题,您应该能够构造一个适当的勾选/渲染循环。