1

我制作了一个能够从导航树加载不同的movieclip 的movieclip 浏览器。我注意到,即使我卸载甚至删除了 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;
}
4

1 回答 1

0

LastCleared/Highest 将始终触发,因为您永远不会清除它。

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

请注意,我无法找到任何记录 setInterval 返回序列号的文档,正如您所认为的那样。但是,由于 setInterval 不“属于”任何人,因此您不能覆盖它来捕获那些间隔 id。

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

于 2013-02-12T04:28:35.120 回答