如何暂停我的 Java 程序 2 秒
How to pause my Java program for 2 seconds
我是 Java 的新手,正在制作一个小游戏作为练习。
if (doAllFaceUpCardsMatch == false) {
//run pause here//
concentration.flipAllCardsFaceDown();
} else {
concentration.makeAllFaceUpCardsInvisible();
}
我想在此之前暂停游戏两秒
concentration.flipAllCardsFaceDown();
我该如何暂停它?
您可以在此处找到类似的 post:How to delay in Java?
基本上是旧 post 中所说的。你可以使用 java.util.concurrent.TimeUnit
import java.util.concurrent.TimeUnit;
if (doAllFaceUpCardsMatch == false) {
TimeUnit.SECONDS.sleep(2);
concentration.flipAllCardsFaceDown();
} else {
concentration.makeAllFaceUpCardsInvisible();
}
您可以使用:
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 后学习如何进行异常处理。
您可以使用 Thread.currentThread().sleep(2000) 暂停当前线程 2 秒(2000 毫秒)。如果是 InterruptedExceptions.
,你应该用 try/catch 包围它
对于那些只想快速破解而无需带入图书馆的人...
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 游戏,这可能不是您想要的,但也许有些人会发现它有用。
另一种非常简单的方法是创建以下方法:
public static void pause(long timeInMilliSeconds) {
long timestamp = System.currentTimeMillis();
do {
} while (System.currentTimeMillis() < timestamp + timeInMilliSeconds);
}
我是 Java 的新手,正在制作一个小游戏作为练习。
if (doAllFaceUpCardsMatch == false) {
//run pause here//
concentration.flipAllCardsFaceDown();
} else {
concentration.makeAllFaceUpCardsInvisible();
}
我想在此之前暂停游戏两秒
concentration.flipAllCardsFaceDown();
我该如何暂停它?
您可以在此处找到类似的 post:How to delay in Java?
基本上是旧 post 中所说的。你可以使用 java.util.concurrent.TimeUnit
import java.util.concurrent.TimeUnit;
if (doAllFaceUpCardsMatch == false) {
TimeUnit.SECONDS.sleep(2);
concentration.flipAllCardsFaceDown();
} else {
concentration.makeAllFaceUpCardsInvisible();
}
您可以使用:
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 后学习如何进行异常处理。
您可以使用 Thread.currentThread().sleep(2000) 暂停当前线程 2 秒(2000 毫秒)。如果是 InterruptedExceptions.
,你应该用 try/catch 包围它对于那些只想快速破解而无需带入图书馆的人...
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 游戏,这可能不是您想要的,但也许有些人会发现它有用。
另一种非常简单的方法是创建以下方法:
public static void pause(long timeInMilliSeconds) {
long timestamp = System.currentTimeMillis();
do {
} while (System.currentTimeMillis() < timestamp + timeInMilliSeconds);
}