我正在做一个我需要使用大量视频剪辑的演示文稿。我使用Loader动态加载所有这些视频。我使用这样的代码片段:
var req:URLRequest = new URLRequest("video.swf");
var a:Loader = new Loader();
a.load(req);
stage.addChild(a);
一 现在的问题是:当我说第7个时,它开始滞后。我不知道为什么,但我认为这是因为一切都被加载到内存中。有没有办法在显示后从内存中删除视频?或者还有其他解决方案吗?
答案 0 :(得分:1)
如果您每次只加载一个新视频并将其添加到舞台上,您将拥有相当大的电影层次结构;所有人都在舞台上和记忆中。
如果您保留对先前加载的电影的引用,则可以在加载“下一个”电影时将其从舞台中删除。没有对此进行正确测试,只是为了让您了解代码的外观:
var oldLoader:Loader = null;
var a:Loader = new Loader();
a.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete);
a.load(<your url>);
function loader_complete(e:Event):void {
var newLoader:Loader = e.currentTarget.loader as Loader;
stage.addChild(newLoader);
if(oldLoader != null) {
stage.removeChild(oldLoader);
oldLoader = null;
}
oldLoader = newLoader;
}
答案 1 :(得分:0)
我想我找到了解决方案。如果你使用removeChild,它只会停止显示,但整个事情仍在内存中(缓存)。因此,加载视频的次数越多,填充缓存的次数就越多。我们需要的是在加载另一个视频之前完全清除缓存的内容。
我使用了unloadAndStop()并且它似乎已完全完成了这个技巧,除非有人反对它。
再次感谢