Java 如何将while循环的每个循环的速度设置为常量?
我有一个while循环,它运行我正在开发的一个简单2d游戏的逻辑。在它里面,我有很多函数调用,它们的速度似乎在变化,这使得游戏中的球结巴了很多。我想试着让每个循环持续相同的时间来消除口吃 我曾试图限制不起作用的函数调用的数量,因为即使调用的数量最少,它仍然会结巴。 我也尝试过使用暂停来节省时间,但这只会让它变得更慢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);
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游戏循环的过去问题,您应该能够构造一个适当的勾选/渲染循环。