在unloadMovie / removeMovieclip之后,setInterval仍然会触发事件

时间:2012-11-22 09:42:40

标签: flash actionscript-2

我制作了一个动画片段浏览器,可以从导航树中加载不同的动画片段。我注意到即使我卸载甚至删除Movieclip,任何有间隔的电影(setInterval())都会继续运行。

鉴于我无法控制加载的动画片段:我如何能够完全删除动画片段,包括间隔?

作为一个解决方法我做了这个功能,试图消除所有运行间隔,但这不是它应该做的方式(或者是吗?)。它看起来效果很好......

var LastCleared=-1;
ClearAllIntervals = function(){
//You MUST clear the intervals or they will not be deleted. Every setInterval returns a higher number.
    Highest = setInterval(function(){},100); //Get highest intervalnumber
    i=Highest;
    while(i>LastCleared){
        trace("***************clearing interval:"+i);
        clearInterval(i--);
    }
    LastCleared=Highest;
}

1 个答案:

答案 0 :(得分:0)

LastCleared / Highest将始终触发,因为你永远无法清除它。

ClearAllIntervals()函数的范围是什么?是否有可能创建一个不记得LastCleared之前值的新实例?

请注意,我似乎无法找到任何setInterval返回序列号的文档,正如您认为的那样。但是,由于setInterval不属于任何人,因此您无法覆盖它以捕获这些间隔ID。

最后,我认为播放器的更高版本中的AS3具有从内存中释放加载的电影的功能,并且它当然具有沙盒,可以防止加载的MC附加到加载MC中的任何内容。