【发布时间】:2017-04-25 17:01:32
【问题描述】:
在 tick() 方法中,您不能有 int startTime = System.nanoTime(),因为它会不断更新它。
我需要找到 tick 方法中经过的时间,以便每 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());
}
}
}
}
以上是小sn-p的代码。 我将如何查找 tick 方法中的经过时间 并让它重新开始对每个 if 语句的计数?
感谢您的帮助:)
【问题讨论】:
-
你在使用线程吗?我在您的代码中没有看到任何线程...
-
@px06 我的主课只有一个线程,我应该有更多线程来让它工作吗?
-
"/* 不起作用,因为 "startTime" 不断更新 */" 是什么让你这么认为?
startTime将始终是方法开头的nanoTime(),而不是 当前nanoTime()。
标签: java timer countdown nanotime