我正在使用Loader::load()
成功将swfs加载到我的主swf中,然后我将它们添加为Sprite的子级。当其他事件发生时,我想根据需要删除swfs。我查看unload()
和removeChildAt()
但没有成功。
我只添加了addChild()
调用以尝试确定已加载的实例,以便我可以删除它。没有addChild();
我也试过发布到播放器v.10并使用myLoader.unloadAndStop()
;但这也没有效果;
以下演示代码显示了我的问题。我看到一个孩子已经添加,一个被删除,但是intro.swf仍在播放。
import flash.display.Loader;
import flash.display.Sprite;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
var myLoader:Loader = new Loader();
var holderMC:Sprite = new Sprite();
var myRequest:URLRequest = new URLRequest('intro.swf');
myLoader.load(myRequest);
holderMC.addChild(myLoader);
trace("initial:"+holderMC.numChildren); // traces initial:1
while(holderMC.numChildren > 0) {
holderMC.removeChildAt(0);
trace("now there are:"+holderMC.numChildren); // traces now there are :0
}
myLoader.unload();
// 修改 - 也尝试过:
myLoader.unloadAndStop();
myLoader = null;
有什么想法吗?
答案 0 :(得分:3)
你肯定还有其他事情在这里发生。首先,您如何看待“intro.swf”?您正在创建holderMC,并将加载的swf作为子项添加,但是何时将holderMC添加到显示列表中?
从视图中删除电影的正确方法是:
holderMC.removeChild(myLoader);
为了让holderMC的内容被标记为垃圾收集,您需要将其设置为null。所以,
holderMC.removeChild(myLoader);
myLoader.unload(); // this will set the content (the movie itself) to null.
myLoader = null; // npw the loader can be garbage collected too
如果您正在执行removeChild但它仍在显示,那么您需要发布更多代码以显示问题的真正位置。