2012-12-01 35 views
4

我不想让计时器每2.5秒(在程序开始时)做一个工作, 与以下代码一起工作。timer.schedule变量速度

Timer timer = new Timer(); 


timer.schedule(new TimerTask() { 

    // @Override 
    @Override 
     public void run() { 

here is the code, and i do Speed = Speed-500 

     }, Speed,Speed); 

速度是一个INT:

public int Speed=2500; 

buth问题是,定时器的速度停留在2500,而可变速度用500每次降低,从而使部分工作。只有定时器不检查速度是否改变。

有人可以帮助我吗?

+0

你在运行方法中有'speed = speed - 500;'语句吗? – assylias

+0

是的,我有,如果(分数== 10){ Speed = Speed-500;} – user1868409

回答

3

你不能这样做,因为一旦你完成时间表,它将使用Timer来修复它。

为重复的固定延迟执行计划指定的任务,从指定的延迟开始。随后的执行大约按规定的时间间隔进行,并与指定的时间段分开。

在这种情况下,您可以取消上一个并安排新的TimerTask。

Timer timer = new Timer(); 

initialize the speed here 

loop based on time 

timer.schedule(new TimerTask() { 

    // @Override 
    @Override 
     public void run() { 

here is the code, and i do Speed = Speed-500 

     }, Speed,Speed); 
+0

你好,你是什么意思'循环基于时间'? – user1868409

+0

每当你想减少时间,做任务到那个时间,然后再次用新的减少时间分配新的任务。 – sunleo

+0

所以我应该做speed-500,就在Timer timer = new Timer()下面。并在run()函数中? – user1868409