2017-02-05 4 views
1

У меня есть Timer, что я запланировала TimerTask с delay 0 и period 150. Теперь я хочу изменить period, но Timer уже запущен. Как я могу изменить period сейчас?Java - изменить длительность таймера во время его работы

private int penultimateStep = 1; 
private int lastStep = 1; 
private Timer move = new Timer(); 
private TimerTask movePlayer = new TimerTask(){ 
    public void run(){ 
     //Schritte ändern 
     if(lastStep==3){ 
      lastStep = 2; 
      penultimateStep = 1; 
     } 
     else if(lastStep==1){ 
      lastStep = 2; 
      penultimateStep = 3; 
     } 
     else if(lastStep==2){ 
      if(penultimateStep==1){ 
       lastStep = 1; 
       penultimateStep = 3; 
      } 
      else if(penultimateStep==3){ 
       lastStep = 3; 
       penultimateStep = 1; 
      } 
     } 
    } 
}; 


... 

move.schedule(movePlayer, 0, 150); 
+0

Вы можете поделиться некоторыми кодами, чтобы помочь? – azro

+0

Зависит от того, какой таймер вы используете. –

+0

вы хотите перенести задачу? – xFighter

ответ

-1

Timer and TimerTask - how to reschedule Timer from within TimerTask run

Resettable Java Timer

Проверьте две ссылки. Этот вопрос может быть дубликатом любого из вышеперечисленных.

Таким образом, вы можете изменить свой код следующим образом:

private int penultimateStep = 1; 
private int lastStep = 1; 
private Timer move = new Timer(); 

class MovePlayer extends TimerTask { 
    public void run(){ 
     //Schritte ändern 
     if(lastStep==3){ 
      lastStep = 2; 
      penultimateStep = 1; 
     } 
     else if(lastStep==1){ 
      lastStep = 2; 
      penultimateStep = 3; 
     } 
     else if(lastStep==2){ 
      if(penultimateStep==1){ 
       lastStep = 1; 
       penultimateStep = 3; 
      } 
      else if(penultimateStep==3){ 
       lastStep = 3; 
       penultimateStep = 1; 
      } 
     } 
    } 
} 


... 

move.schedule(new MovePlayer(), 0, 150); 

Приветствия.