在AS2中运行时取消setInterval延迟

时间:2012-05-10 16:58:26

标签: actionscript-2 flash-cs4

这可能吗? 我有一个文件,当用户角色在另一个元素上时,会启动一个影片剪辑。为了使用户体验更愉快,这在使用setInterval延迟3秒后发生。如果用户在3秒钟之前滚动元素,有没有办法停止和重置此时间?

var xTimer = setInterval(wait, 3000);
function wait(){
    show('all');
    play('all');
    clearInterval(xTimer);
}

上面是我用来设置延迟的代码,下面是我假设中断和重置定时器的代码。

invisBtn.onRollOut = function(){
  rollover_mc.gotoAndStop(1);
  stop();
  clearInterval(xTimer());
  trace('off');
}

对此的任何帮助都将受到广泛赞赏。

1 个答案:

答案 0 :(得分:0)

首先,setInterval& clearInterval函数使用Number变量来工作。

setInterval()返回一个Number变量,clearInterval()接受参数中的Number以删除先前启动的间隔。在这里,您似乎将间隔ID保留在函数变量中而不是第一个。

因此,clearInterval(xTimer());实际上应该是clearInterval(xTimer); (在xTimer之后没有括号)。

其次,所以你可以在invisBtn.onRollOut函数中使用它,只需确保xTimer变量的范围正确(不在invisBtn.onRollOut也不在的函数内),而不是在不同的时间轴的关键帧(Flash中的时间轴关键帧一旦读取头传递到其上有代码的图层的新关键帧上,就会忘记您在其上写的代码。)

如果您需要,请随时询问更多详情!