2014-01-20 34 views
0

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

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

这是我的代码:

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(); 

如果我改变的难度在程序运行时是没有效果的。

+0

'如果我在程序运行时更改了难度,则没有任何影响。“ - 您是否更改难度变量,或者是否实际调用了Timer上的方法来更改延迟? – camickr

回答

0

,你将不得不取消当前的计时器,然后用正确的值重新实例计时器(你会改变难度)

+0

我该如何取消定时器? – user3212504

+0

@ user3212504,'我如何取消计时器?'您是否阅读过Timer API? – camickr