如何暂停我的Java程序2秒钟

时间:2017-04-19 23:13:21

标签: java timer pause

我是Java新手并为练习制作一款小游戏。

if (doAllFaceUpCardsMatch == false) {
        //run pause here//
        concentration.flipAllCardsFaceDown();
} else {
        concentration.makeAllFaceUpCardsInvisible();
}

我希望在此之前暂停游戏两秒钟

concentration.flipAllCardsFaceDown();

我该如何暂停?

5 个答案:

答案 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);

}