Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单的java游戏,创建计时器的问题_Java_Eclipse_Timer - Fatal编程技术网

简单的java游戏,创建计时器的问题

简单的java游戏,创建计时器的问题,java,eclipse,timer,Java,Eclipse,Timer,我正在创造一个简单的游戏,你控制一个球,尽可能长时间地避开其他移动障碍物 这个想法是,将有一个计时器,它将从0开始,大约10秒后,它将添加移动到另一个级别,有更多移动障碍物 我在创建计时器时遇到一些问题,计时器将启动计数,我尝试使用以下方法: public static void timer(){ int count = 0; while (count<10) { try { Thread.sleep(100

我正在创造一个简单的游戏,你控制一个球,尽可能长时间地避开其他移动障碍物

这个想法是,将有一个计时器,它将从0开始,大约10秒后,它将添加移动到另一个级别,有更多移动障碍物

我在创建计时器时遇到一些问题,计时器将启动计数,我尝试使用以下方法:

        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()
not
sleeep()
: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;
}