我有一个函数,我想在一帧内的间隔运行。我使用以下代码启动该函数:
var intervalID = setInterval(intervalFunction, 3000);
然后,在按钮的onRelease中我想停止该功能。在onRelease中,我转换到另一个框架。
btn.onRelease = function()
{
clearInterval(intervalID);
gotoAndPlay("nextframe");
}
intervalFunction继续执行。我做错了什么?
答案 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");
}
(这些都未经过测试)