你如何停止setInterval函数?

时间:2009-11-10 13:55:52

标签: flash actionscript

我有一个函数,我想在一帧内的间隔运行。我使用以下代码启动该函数:

var intervalID = setInterval(intervalFunction, 3000);

然后,在按钮的onRelease中我想停止该功能。在onRelease中,我转换到另一个框架。

btn.onRelease = function()
{
  clearInterval(intervalID);
  gotoAndPlay("nextframe"); 
}

intervalFunction继续执行。我做错了什么?

2 个答案:

答案 0 :(得分:1)

不确定这是否解决了您的问题,但如果您只需要触发一次计时器,则可以使用setTimeout()。它与setInterval()之间的唯一区别是setInterval()重复,而setTimeout()则不重复。 Here's some examples

[编辑] 在重新阅读问题之后,你可以忽略第一段,尽管这些例子可能仍有帮助。 [/编辑]

虽然解决了你的具体问题,但看起来你做错了什么。可能是一个愚蠢的问题,但是当调用clearInterval时,intervalID是否在调试器中包含正确的值?

答案 1 :(得分:1)

我同意bhups - 尝试检查intervalID的范围。出于测试目的,请使用对intervalID的绝对引用,并查看是否获得相同的行为。

btn.onRelease = function()
{
  clearInterval(root.<<path to proper level>>.intervalID);
  gotoAndPlay("nextFrame");
}

如果你正在使用AS 3,你也可以尝试切换到Timer类。

var timer:Timer = new Timer(3000);
timer.addEventListener(TimerEvent.TIMER, intervalFunction);
timer.start();

btn.addEventListener(MouseEvent.CLICK, btnClick);

function btnClick(evt:MouseEvent):void
{
  timer.stop();
  timer.removeEventListener(TimerEvent.TIMER, intervalFunction);
  gotoAndPlay("nextFrame");
}

(这些都未经过测试)