简单的java游戏,创建计时器的问题
我正在创造一个简单的游戏,你控制一个球,尽可能长时间地避开其他移动障碍物 这个想法是,将有一个计时器,它将从0开始,大约10秒后,它将添加移动到另一个级别,有更多移动障碍物 我在创建计时器时遇到一些问题,计时器将启动计数,我尝试使用以下方法:简单的java游戏,创建计时器的问题,java,eclipse,timer,Java,Eclipse,Timer,我正在创造一个简单的游戏,你控制一个球,尽可能长时间地避开其他移动障碍物 这个想法是,将有一个计时器,它将从0开始,大约10秒后,它将添加移动到另一个级别,有更多移动障碍物 我在创建计时器时遇到一些问题,计时器将启动计数,我尝试使用以下方法: public static void timer(){ int count = 0; while (count<10) { try { Thread.sleep(100
public static void timer(){
int count = 0;
while (count<10) {
try {
Thread.sleep(1000);
} catch (Exception e) {
}
count++;
}
System.out.println(count);}}
公共静态无效计时器(){
整数计数=0;
虽然(count我不确定这是否能帮助您,但这里有一个简单的可运行计时器
public class Timer implements Runnable {
private final int sec;
public Timer(int sec) {
this.sec = sec;
run();
}
@Override
public void run() {
int count = sec;
while (count > 0) {
System.out.println(count);
//here you can put your method to start the game.
count--;
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
是的,您可以在计时器函数中添加一个标志变量。如果您只是想延迟某个操作,请在为计时器执行的操作中尝试类似的操作
if (counter != 0) {
counter++;
if (counter == 10) { // count to 10ms
counter = 1;
// whatever action you want done after the delay
}
} else {
counter = 0;
}
sleep()
notsleeep()
:DOh,不抱歉,在这里输入错误,在Eclipse中我使用了sleep():DDon不要调用EDT上的Thread.sleep
,或任何其他导致调用线程阻塞的方法。听起来好像是这样。你必须显示更多代码。通过调用EventQueue.isDispatchThread()检查你是否在EDT上
没问题,不过需要修复打字错误:DGoing要在一秒钟内更新,显示更多代码。这与我以前做的差不多,如果我放入程序,计时器会工作,但游戏图形会因某种原因消失。通过测试所有代码行,线程睡眠是导致图形消失的原因。我再次编辑了它。我想想睡眠会导致你的图形消失。我怎么知道的,你永远不应该冻结主线程
if (counter != 0) {
counter++;
if (counter == 10) { // count to 10ms
counter = 1;
// whatever action you want done after the delay
}
} else {
counter = 0;
}