removeChildAt()是否清除cpu资源?
问题描述:
我正在从一个主要的swf加载/卸载多个swfs。当我打开一个新的SWF我做这样的事情:removeChildAt()是否清除cpu资源?
contentContainer.addChild(the new swf); //add the new swf
contentContainer.swapChildrenAt(0,1);
contentContainer.removeChildAt(1); //remove the previous swf
我的问题是,当我removeChildAt(),不老的SWF继续“打”,并保持占用CPU资源?我怎样才能完全杀死它?如果旧SWF中有音频或视频,它在移除后似乎仍在继续播放。
答
你可能想尝试这样的:
var mc:MovieClip = contentContainer.removeChildAt(1) as MovieClip;
mc.stop();
或做一些公共停车()嵌入在卸载SWF电影的方法。 (ref)
您可能需要一些变化。
此外,如果您可以,您还可以让子swf侦听Event.ADDED_TO_STAGE
,Event.REMOVED_FROM_STAGE
事件。让它们在这个意义上控制自己可能更有意义,而不是依靠父容器来阻止它们。
倾听REMOVED_FROM_STAGE是一个很好的解决方案。谢谢。 – sol
这实际上并没有回答这个问题。即使你从舞台上移除MC并阻止他们,他们仍会继续记忆直到他们被垃圾收集。这里唯一的答案是跟踪你的参考,并确保你的剪辑将得到正确的GC。 – fenomas
问题是CPU资源。不是记忆。而AFAIK,除了清除所有变量引用和交叉手指之外,没有办法调用GC。 – Glenn