2011-02-15 67 views
1

IM使用.addchild將圖像添加到影片剪輯:如何在.addchild之後清理MovieClip? AS3 /閃存

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; } 
} 

的認爲,我想重新使用影片剪輯,如何清潔呢?謝謝!

回答

1

好像你在你的例子中將圖像添加到兩個不同的容器中,但如果movieclip中唯一的圖像是圖像,你可以使用removeChildAt(0)使它們離開。還要刪除與圖像相關的任何聽衆。將圖像提供給垃圾收集。

0

如果imageLoader是要刪除的對象:

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

imageLoader = null; 

此外,如果imageLoaderflash.display.Loader型的,那麼你要清除它之前調用它unload()。如果是Flex的ImageSWFLoader組件,那麼您可以將source屬性設置爲null

0

你可以看看casalib用casaMovieClip做什麼。通常我會使用這個庫而不是添加這些函數,但是在發生的事情上有一個高峯是很好的。 removeChild沒問題,但不知道場景後面發生了什麼,並且沒有完全銷燬對象會導致內存泄漏。

鑑於您使用的圖像加載器我假設您已經有至少一個事件偵聽器。這個事件監聽器可以連接到你加載的圖像,即使你從顯示列表中刪除了它(通過removeChild/removeChildAt),你仍然可以讓對象留下。