使用.addchild将图像添加到影片剪辑中:
function imageLoaded(e:Event):void {
fn=fn+1;
if (fn==1) { panel.estadoimg.addChild(imageLoader); loadImage(datosXML.localiza);}
if (fn==2) { panel.mapa.mapaimg.addChild(imageLoader); fn=0; }
}
我认为我想重用那个movieclip,我该如何清理?谢谢!
答案 0 :(得分:1)
在您的示例中,您似乎要将图像添加到两个不同的容器中,但如果动画片段中唯一的内容是图像,则可以使用 removeChildAt(0)将它们移出。还会删除与图像关联的所有侦听器。取消图像以提供垃圾收集。
答案 1 :(得分:0)
如果imageLoader
是您要删除的对象:
var p:DisplayObjectContainer = imageLoader.parent;
if (p)
p.removeChild(imageLoader);
imageLoader = null;
此外,如果imageLoader
属于flash.display.Loader
类型,那么您需要在清除它之前调用unload()
。如果它是Flex的Image
或SWFLoader
组件,那么您只需将source
属性设置为null
。
答案 2 :(得分:0)
你可以看看casalib对casaMovieClip做了些什么。通常我会使用这个库而不是添加这些函数,但是在正在发生的事情上有一个高峰是很好的。 removeChild没问题,但不知道幕后发生了什么,并且没有完全破坏对象会导致内存泄漏。
鉴于您正在使用图像加载器,我假设您已经拥有至少一个事件监听器。此事件侦听器可以连接到您加载的图像,即使您从显示列表中删除它(通过removeChild / removechildAt),您仍然可以使对象延迟。