我制作了一个动画片段浏览器,可以从导航树中加载不同的动画片段。我注意到即使我卸载甚至删除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;
}
答案 0 :(得分:0)
LastCleared / Highest将始终触发,因为你永远无法清除它。
ClearAllIntervals()函数的范围是什么?是否有可能创建一个不记得LastCleared之前值的新实例?
请注意,我似乎无法找到任何setInterval返回序列号的文档,正如您认为的那样。但是,由于setInterval不属于任何人,因此您无法覆盖它以捕获这些间隔ID。
最后,我认为播放器的更高版本中的AS3具有从内存中释放加载的电影的功能,并且它当然具有沙盒,可以防止加载的MC附加到加载MC中的任何内容。