Java 如何在滴答法中跟踪经过的时间?
在tick()方法中,不能有int startTime=System.nanoTime(),因为它会不断更新它 我需要在tick方法中找到经过的时间,以便每2秒生成一个新对象Java 如何在滴答法中跟踪经过的时间?,java,timer,countdown,nanotime,Java,Timer,Countdown,Nanotime,在tick()方法中,不能有int startTime=System.nanoTime(),因为它会不断更新它 我需要在tick方法中找到经过的时间,以便每2秒生成一个新对象 public void tick() { long startTime = System.nanoTime(); // wave 1 if (wave == 1) { float k = System.nanoTime() - startTime;
public void tick() {
long startTime = System.nanoTime();
// wave 1
if (wave == 1) {
float k = System.nanoTime() - startTime;
/* won't work because "startTime" is constantly updating */
if (k >= 2 && k <= 3) {
handler.addObject(new BasicEnemy());
} else if (k >= 4 && k <= 5) {
handler.addObject(new BasicObject());
} else if (k >= 6 && k <= 7) {
handler.addObject(new BasicEnemy());
}
}
// wave 2
if (wave == 2) {
float k = System.nanoTime() - startTime;
/* won't work because "startTime" is constantly updating */
if (k >= 2 && k <= 3) {
handler.addObject(new BasicEnemy());
} else if (k >= 4 && k <= 5) {
handler.addObject(new BasicObject());
} else if (k >= 6 && k <= 7) {
handler.addObject(new BasicEnemy());
}
}
}
}
public void tick(){
long startTime=System.nanoTime();
//第1波
如果(波==1){
float k=System.nanoTime()-startTime;
/*因为“startTime”不断更新,所以不起作用*/
如果(k>=2&&k=4&&k=6&&k您需要在tick()
方法之外保持timeAtLastAccept
,如下所示:
long timeAtLastAccept = System.nanoTime();
public void tick(){
if(System.nanoTime()-timeAtLastAccept >threshold) {
//Spawn your objects!
timeAtLastAccept = System.nanoTime();
}
//do ticky things
}
你在使用线程吗?我在你的代码中看不到任何线程…@px06我的主类中只有一个线程,我应该有更多线程才能让它工作吗?/*不工作,因为“startTime”不断更新*/“你怎么会这么想?startTime
将始终是纳米时间()
在方法的开头,不是当前的nanoTime()
。我最初是这样做的,但是,它每2秒连续生成一个对象。@如果您在生成一个对象后更新您的时间变量,如上图所示,它应该再等待2秒,然后再生成另一个对象“您需要在tick()方法之外保留timeAtLastAccept”,我唯一可以初始化它的地方是在构造函数中-timeAtLastAccept将始终大于阈值。@程序员您必须进行计算,将2秒转换为多少纳秒,这将是您的阈值,是的,我的意思是将其作为constructor@badProgrammer太好了!如果你成功了,你可以点击如果您愿意,请在我的帖子投票部分旁边打勾