如何更改计时器

时间:2014-01-20 15:37:36

标签: java swing timer

我不知道如何更改程序中的计时器。

我想在程序运行时控制计时器。

这是我的代码:

Timer timer = new Timer(Difficulty, new ActionListener() {
            public void actionPerformed(ActionEvent e) 
            {
                if(p.GameOver==0)
                {
                    if(p.s==1)
                    {
                        System.out.println("S");
                        p.moveSquare(p.SnakeHeadX,p.SnakeHeadY+p.SnakeHeadH);
                        p.eatBlueSquare(p.SnakeHeadX,p.SnakeHeadY);
                        p.Border(p.SnakeHeadX,p.SnakeHeadY);
                        p.Colision(p.SnakeHeadX,p.SnakeHeadY);
                    }
                    if(p.d==1)
                    {
                        System.out.println("D");
                        p.moveSquare(p.SnakeHeadX+p.SnakeHeadW,p.SnakeHeadY);
                        p.eatBlueSquare(p.SnakeHeadX,p.SnakeHeadY);
                        p.Border(p.SnakeHeadX,p.SnakeHeadY);
                        p.Colision(p.SnakeHeadX,p.SnakeHeadY);
                    }
                    if(p.a==1)
                    {
                        System.out.println("A");
                        p.moveSquare(p.SnakeHeadX - p.SnakeHeadW,p.SnakeHeadY);
                        p.eatBlueSquare(p.SnakeHeadX,p.SnakeHeadY);
                        p.Border(p.SnakeHeadX,p.SnakeHeadY);
                        p.Colision(p.SnakeHeadX,p.SnakeHeadY);
                    }
                    if(p.w==1)
                    {
                        System.out.println("W");
                        p.moveSquare(p.SnakeHeadX,p.SnakeHeadY-p.SnakeHeadH);
                        p.eatBlueSquare(p.SnakeHeadX,p.SnakeHeadY);
                        p.Border(p.SnakeHeadX,p.SnakeHeadY);
                        p.Colision(p.SnakeHeadX,p.SnakeHeadY);
                    }

                }

            }
        });
timer.start();

如果我在程序运行时改变了难度,则无效。

2 个答案:

答案 0 :(得分:3)

每次更新难度时都使用timer.setDelay(难度)。 有关计时器的详细信息,请参阅:http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html

答案 1 :(得分:0)

你必须取消当前的计时器,然后用正确的值重新修改计时器(你将改变难度)