gpt4 book ai didi

java - 减慢对特定函数的调用

转载 作者:行者123 更新时间:2023-12-01 18:45:35 28 4
gpt4 key购买 nike

我这里有一个游戏循环,它调用tick方法。在tick方法内部,会调用其他tick方法。如何在不减慢整个程序速度的情况下减慢对 input.tick() 的调用?将 Thread.sleep(); 放在 tick 方法中的任何位置都会减慢整个程序的速度,这不是我想要的。

public void run() {
long lastTime = System.nanoTime();
long timer = System.currentTimeMillis();
final double ns = 1000000000.0 / 60.0;
double delta = 0;
int frames = 0;
int ticks = 0;

while(running){
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;

while(delta >= 1){
tick();
ticks++;
delta--;
}
render();
frames++;

if(System.currentTimeMillis() - timer > 1000){
timer += 1000;
System.out.println(ticks + " tps, " + frames + " fps");
ticks = 0;

frames = 0;
}
}
stop();
}

  public void tick(){
input.tick(); // How do I slow down the call to this?

if(gameState){
player.tick();
player.move();
collision();
treeline.move();
obstacleHole.move();
obstacleWolf.move();
coin.move();
coin.tick();
}
}

最佳答案

您似乎正在编写一个 GUI 应用程序,并且您显示的代码在事件调度线程上运行。 sleep 使 EDT 卡住并且无法更新 GUI。您必须做的是使用 javax.swing.Timer 类来推迟代码的执行。

如果您想定期勾选,则只需在提交给Timer的处理程序中再次重新安排相同的任务即可。

关于java - 减慢对特定函数的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17907962/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com