如何在 tick 方法中跟踪经过的时间?
How to keep track of the elapsed time in a tick method?
在 tick() 方法中,你不能有一个 int startTime = System.nanoTime() 因为它会不断更新它。
我需要在滴答方法中找到经过的时间,以便每 2 秒生成一个新对象。
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());
}
}
}
}
以上是一小段代码。
我将如何在 tick 方法 中找到 已用时间并让它为每个 if 语句重新计数?
感谢您的帮助:)
您需要在 tick()
方法之外保持 timeAtLastAccept
,如下所示:
long timeAtLastAccept = System.nanoTime();
public void tick(){
if(System.nanoTime()-timeAtLastAccept >threshold) {
//Spawn your objects!
timeAtLastAccept = System.nanoTime();
}
//do ticky things
}
在 tick() 方法中,你不能有一个 int startTime = System.nanoTime() 因为它会不断更新它。
我需要在滴答方法中找到经过的时间,以便每 2 秒生成一个新对象。
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());
}
}
}
}
以上是一小段代码。 我将如何在 tick 方法 中找到 已用时间并让它为每个 if 语句重新计数?
感谢您的帮助:)
您需要在 tick()
方法之外保持 timeAtLastAccept
,如下所示:
long timeAtLastAccept = System.nanoTime();
public void tick(){
if(System.nanoTime()-timeAtLastAccept >threshold) {
//Spawn your objects!
timeAtLastAccept = System.nanoTime();
}
//do ticky things
}