是否可以动态设置计时器的步长?

时间:2014-08-22 23:30:50

标签: actionscript-3 timer

假设我有一个每100毫秒滴答一次的计时器。

在某些事件发生后,我需要将该刻度值更改为120,并且每20毫秒我想再将其增加20,所以最终会出现这样的情况:

100,100,100,100,100,< -event>,120,140,​​160,180,200,200,200,200, - >结束。

我经历了Timer类的方法,但在这种情况下似乎没什么用。

我意识到我每次都可以销毁并创建一个新的Timer对象,但它并不漂亮。

基本上,我想减速定时器以创建补间效果。

2 个答案:

答案 0 :(得分:1)

您可以跟踪刻度或时间的数量,然后调整计时器的延迟属性。 例如:

// class level
private var _timer:Timer;
private var totalTime:int;

//inside method that creates timer
totalTime = 0;
_timer = new Timer(1000, 5);
_timer.addEventListener(TimerEvent.TIMER, updateTimer);
_timer.start();

// inside your function
private function updateTimer(event:TimerEvent):void
{
  if(totalTime == 5000) // seconds
   _timer.delay = 10000;
}

答案 1 :(得分:1)

您可以简单地使用delay类的Timer专属:

var dt:int= 100;

var myTimer:Timer = new Timer(dt); // myTimer's delay is dt
myTimer.addEventListener("timer", timerHandler);
myTimer.start();

function timerHandler(event:TimerEvent):void {
    if (/*my event here*/) dt += (dt < 200) ? 20 : 0;
    event.target.delay = dt;
    // trace(event.target.delay);
}

详细了解Timer class