我是Java新手并为练习制作一款小游戏。
if (doAllFaceUpCardsMatch == false) {
//run pause here//
concentration.flipAllCardsFaceDown();
} else {
concentration.makeAllFaceUpCardsInvisible();
}
我希望在此之前暂停游戏两秒钟
concentration.flipAllCardsFaceDown();
我该如何暂停?
答案 0 :(得分:4)
您可以使用:
Thread.sleep(2000);
或
java.util.concurrent.TimeUnit.SECONDS.sleep(2);
请注意,这两个方法都抛出InterruptedException
,这是一个已检查过的异常,因此您必须在方法中捕获或声明。
编辑: 捕获异常后,您的代码将如下所示:
if (doAllFaceUpCardsMatch == false) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
concentration.flipAllCardsFaceDown();
} else {
concentration.makeAllFaceUpCardsInvisible();
}
由于你是新手,我建议你在学习java之后学习如何进行异常处理。
答案 1 :(得分:1)
您可以在此处找到类似的帖子:How to delay in Java?
基本上在旧帖中说的是什么。您可以使用java.util.concurrent.TimeUnit
import java.util.concurrent.TimeUnit;
if (doAllFaceUpCardsMatch == false) {
TimeUnit.SECONDS.sleep(2);
concentration.flipAllCardsFaceDown();
} else {
concentration.makeAllFaceUpCardsInvisible();
}
答案 2 :(得分:1)
对于那些只想快速入侵而无需携带图书馆的人......
public class Timing {
public static void main(String[] args) {
int delay = 1000; // number of milliseconds to sleep
long start = System.currentTimeMillis();
while(start >= System.currentTimeMillis() - delay); // do nothing
System.out.println("Time Slept: " + Long.toString(System.currentTimeMillis() - start));
}
}
对于高精度60fps游戏,这可能不是你想要的,但也许有些人会发现它很有用。
答案 3 :(得分:0)
您可以使用Thread.currentThread()。sleep(2000)暂停当前线程2秒(2000毫秒)。在InterruptedException s。
的情况下,您应该使用try / catch包围它答案 4 :(得分:0)
另一种非常简单的方法是创建以下方法:
public static void pause(long timeInMilliSeconds) {
long timestamp = System.currentTimeMillis();
do {
} while (System.currentTimeMillis() < timestamp + timeInMilliSeconds);
}