DisplayObjectContainer.removeChildren()

Previous to Flash Player 11, if a developer wanted to remove all children from a container object, it was necessary to first determine how many children were present through DisplayObjectContainer.numChildren and then loop over each of these child objects, removing them one at a time.

With the DisplayObjectContainer.removeChildren() method, one simple command can be used to remove all children of a parent container, making them all available for garbage collection.

Warning

You’ll want to be sure to remove any event listeners or other references to these children before invoking removeChildren, else the garbage collector may not be able to totally free the memory allocated to these objects.

Remove children

Figure 1-3. Remove children

In the following example, we will generate a number of dynamic MovieClip symbols upon the Stage. We add an event listener to the Stage as well, listening for a simple MouseEvent.CLICK event – which then invokes a method to remove all of these MovieClips with one simple command: stage.removeChildren().

package {
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.MouseEvent;

    [SWF(width="600", height="500", backgroundColor="#CCCCCC")]

    public class RemoveAllChildren extends Sprite {
        public function RemoveAllChildren() {
            generateDisplayObjects();
        }

        protected function generateDisplayObjects():void {
            for(var i:int=100; i>0; i--){
                var childMC:MovieClip = new MovieClip();
                var randX:Number = Math.floor(Math.random() * (1+stage.stageWidth-100)) + 50;
                var randY:Number = Math.floor(Math.random() * (1+stage.stageHeight-100)) + 50;
                var randD:Number = Math.floor(Math.random() * 50-10) + 10;
                childMC.x = randX;
                childMC.y = randY;
                childMC.graphics.beginFill(0x000000, 0.5);
                childMC.graphics.drawCircle(0, 0, randD);
                childMC.graphics.endFill();
                this.addChild(childMC);
            }
            stage.addEventListener(MouseEvent.CLICK, removeAllChildren);
        }

        protected function removeAllChildren(e:MouseEvent):void {
            stage.removeChildren();
        }
    }
}

Get What's New in Flash Player 11 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.