如何在孩子出生后清洗电影唇?AS3/Flash

如何在孩子出生后清洗电影唇?AS3/Flash,flash,actionscript-3,Flash,Actionscript 3,im使用.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; } } 我的想法是,我想重复使用那个电影唇,

im使用.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中只有图像,则可以使用removeChildAt(0)将它们从容器中取出。同时删除与图像关联的所有侦听器。将图像设为空以提供垃圾收集。

在您的示例中,您似乎在将图像添加到两个不同的容器中,但是如果movieclip中只有图像,您可以使用removeChildAt(0)将它们从容器中取出。同时删除与图像关联的所有侦听器。将图像设为空以提供垃圾收集。

如果要删除的对象是
imageLoader

var p:DisplayObjectContainer = imageLoader.parent;
if (p)
  p.removeChild(imageLoader);

imageLoader = null;

此外,如果
imageLoader
的类型为
flash.display.Loader
,则在清理它之前,您需要对它调用
unload()
。如果它是Flex的
Image
SWFLoader
组件,那么只要将
source
属性设置为
null
,如果
imageLoader
是要删除的对象:

var p:DisplayObjectContainer = imageLoader.parent;
if (p)
  p.removeChild(imageLoader);

imageLoader = null;

此外,如果
imageLoader
的类型为
flash.display.Loader
,则在清理它之前,您需要对它调用
unload()
。如果它是Flex的
Image
SWFLoader
组件,那么您只需将
source
属性设置为
null
就可以查看casalib的功能。通常我会使用这个库,而不是添加这些函数,但最好在发生的事情上有一个峰值。 removeChild是可以的,但是如果不知道幕后发生了什么,并且没有完全销毁对象,可能会导致内存泄漏


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

您可以查看casalib的处理方法。通常我会使用这个库,而不是添加这些函数,但最好在发生的事情上有一个峰值。 removeChild是可以的,但是如果不知道幕后发生了什么,并且没有完全销毁对象,可能会导致内存泄漏

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