removeChild() メソッドが使用されているコード部分を提供してください。
通常、 removeChild() は次のように使用する必要があります。
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
var movieClip:MovieClip;
var timer:Timer=new Timer(5000, 1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
makeMovieClips();
function makeMovieClips() {
for (var i:int; i<2000; i++) {
movieClip=new MovieClip();
movieClip.graphics.beginFill(Math.random()*0xFFFFFF);
movieClip.graphics.drawCircle(Math.random()*stage.stageWidth, Math.random()*stage.stageHeight, Math.random()*40);
movieClip.graphics.endFill();
addChild(movieClip);
}
trace (numChildren) // should output 2000;
timer.start();
}
function onTimerComplete(e:TimerEvent):void {
while (numChildren>0) {
movieClip=getChildAt(0) as MovieClip;
removeChild(movieClip);
// or we can use removeChildAt(0); instead of 2 lines above
}
trace (numChildren) // should output 0, because all objects are removed from display list;
}
さらに、表示リストからオブジェクトを削除しても、それらのオブジェクトに参照が残っている場合はメモリから除外されないことに注意してください。この例では、すべてのムービークリップがステージから削除された後も 1 つのムービークリップ オブジェクトへの参照が残るため、VM のメモリの一部を占有し、ガベージ コレクターはその部分を消去しません。私の例では、参照を削除するには、onTimerComplete メソッドの while ループの後に次のコード行を追加する必要があります。
movieClip=null;