2011-12-05 13 views
4

Timer私は基本的にt秒ごとに何かを行う必要があります。しかし、私はタイマーがタスクを繰り返すタイマー時間を変更できるようにしたい。 1000msでは、タイマーが開始を遅らせ、すべてのmoveTimeミリ秒を繰り返した後、そう遅延が固定されていないJavaタイマー

public Bot() { 
    timer = new Timer(); 
    timer.schedule(new Task(), 1000, moveTime = 1000);   
} 

public class Task extends TimerTask { 
    @Override 
    public void run() { 
     System.out.println("Time Passed from last repeat:" + movetime) 
     moveTime += 1000; 
    } 

:私はこのような何かを書きました。問題は、movetimeを1000増加しても、タイマーは常に初期遅延(1000)で実行されますが、run()を呼び出すたびにmovetimeの値が増加します(2000,3000,4000など)。

私は何かが分からないか、何か別のものを 't'秒ごとに繰り返すことができますか?

ありがとうございました。

+1

、[ 'javax.swing.Timer'(http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html) 'setDelay()'をサポートしています。 – trashgod

答えて

12

私はjava.util.Timerクラスがこれをサポートしているとは思いません。

何かできることは、一定時間後にタスクを実行する方法Timer.schedule(TimerTask, int)を使用することです。タスクが実行されると、新しい間隔で新しいタイマーをスケジュールすることができます。

ような何か:スイング文脈において

int moveTime = 1000; 

Timer timer = new Timer(); 

public Bot(){ 
    timer.schedule(new Task(), moveTime); 
} 

public class Task extends TimerTask { 
    @Override 
    public void run() { 
     System.out.println("Time Passed from last repeat:"+movetime) 
     moveTime += 1000; 
     timer.schedule(new Task(), moveTime) 
    } 
} 
関連する問題