如何在.addchild之后清理MovieClip? AS3 /闪光

时间:2011-02-15 03:27:08

标签: flash actionscript-3

使用.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,我该如何清理?谢谢!

3 个答案:

答案 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的ImageSWFLoader组件,那么您只需将source属性设置为null

答案 2 :(得分:0)

你可以看看casalib对casaMovieClip做了些什么。通常我会使用这个库而不是添加这些函数,但是在正在发生的事情上有一个高峰是很好的。 removeChild没问题,但不知道幕后发生了什么,并且没有完全破坏对象会导致内存泄漏。

鉴于您正在使用图像加载器,我假设您已经拥有至少一个事件监听器。此事件侦听器可以连接到您加载的图像,即使您从显示列表中删除它(通过removeChild / removechildAt),您仍然可以使对象延迟。