2017-02-05 1 views
1

J'ai un Timer que je Planifié TimerTask avec le delay 0 et 150. period Maintenant, je veux changer le period, mais le Timer est déjà en cours d'exécution. Comment puis-je changer le period maintenant?Java - changer la durée de la minuterie en cours d'exécution

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

Pouvez-vous partager du code pour aider? – azro

+0

Dépend de la minuterie que vous utilisez. –

+0

vous voulez replanifier la tâche? – xFighter

Répondre

-1

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

Resettable Java Timer

Vérifiez les deux liens. Cette question pourrait être une copie de l'un ou l'autre de ce qui précède.

Vous pouvez modifier votre code comme suit:

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

Vive.