如何将while循环的每个循环的速度设置为常量? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

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

我试图限制不起作用的函数调用量,因为即使用最少量的函数调用它仍然是口吃的。我也尝试使用pause()来节省时间,但这让它变慢了。

 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.
...
}

它应该比这更顺畅。有什么建议?

java performance while-loop 2d game-physics
1个回答
1
投票

这里有多个方面:

  • 理想情况下,您的“工作者”方法的编写方式是,它们在一次循环迭代中不会执行5项操作,而在下一次循环迭代中则不会执行5000次。它们应该相对“恒定”。
  • 你无法加快速度。如果有的话,你可以在每个循环的开头和最后获得System.currentTimeMillis()。然后你可以确定“这个循环有点太快,所以在50毫秒内人为地做什么”。
© www.soinside.com 2019 - 2024. All rights reserved.