为了防止内存泄漏,可能需要将不需要的显示元素清楚掉,如果这些需要被清除的元素里还有对象递归的含有子显示容器,那可能还是不会被GC收集掉,因此以下函数可以将所有的显示容器全部清除掉:
function clearDisplayList(container:DisplayObjectContainer):void {
var child:DisplayObject;
for (var i:Number = container.numChildren - 1; i >= 0; i--) {
trace("container: " + container.name + "-->i: " + i);
child = container.getChildAt(i);
if (child is DisplayObjectContainer) {
// 递归调用
clearDisplayList(DisplayObjectContainer(child));
}
container.removeChild(child);
}
}
如果想把场景中的所有元素清除掉,直接用clearDisplayList(stage);就可以了