Well, nothing is removed from memory so far , it really depends on how movie1 is referenced. Let's say that later in the application you want to add movie1 again, you should find that movie1 is not only still here but it also contains movie2 & movie3.
var movie1:MovieClip;
whatever();
anotherMethod();
function whatever():void
{
movie1 = new MovieClip();
var movie2:MovieClip = new MovieClip();
var movie3:MovieClip = new MovieClip();
movie1.addChild(movie2);
movie1.addChild(movie3);
addChild(movie1);
whateverElse();
}
function whateverElse():void
{
//here, nothing is garbage collected, movie1 exists outside
//the scope of this function
removeChild(movie1);
//now you can
tryThis();
//but if you do this you're effectively killing movie2 & movie3 , since
//they're not referenced anywhere else.
removeChild(movie1);
movie1 = null;
//this is going to throw an error , movie1's gone!
tryThis();
}
function tryThis():void
{
//yes ,it's still here with all its content
addChild(movie1);
}
function anotherMethod():void
{
var movieN:MovieClip = new MovieClip();
var movie2:MovieClip = new MovieClip();
var movie3:MovieClip = new MovieClip();
movieN.addChild(movie2);
movieN.addChild(movie3);
// do all you need to do...
// then
removeChild( movieN);
getOut();
}
function getOut():void
{
//life goes on without movieN, movie2 & movie3
//waiting to be garbage collected
}