views:

931

answers:

1

Hi folks,

I'm using Loader::load() successfully to load swfs into my main swf and then I add them as a child of a Sprite. When other events occur I want to remove the swfs as needed. I have looked at unload() and at removeChildAt() without success.

I only added the addChild() call to try to pin down the loaded instance so I could remove it. The loading works fine without the addChild();

I have also tried publishing to player v.10 and using myLoader.unloadAndStop(); but this has no effect either;

The following demo code shows my problem. I see one child added and one removed but intro.swf is still playing away.

import flash.display.Loader; 
import flash.display.Sprite;
import flash.display.LoaderInfo;
import flash.net.URLRequest;

var myLoader:Loader = new Loader();
var holderMC:Sprite = new Sprite();
var myRequest:URLRequest = new URLRequest('intro.swf');

myLoader.load(myRequest);
holderMC.addChild(myLoader);
trace("initial:"+holderMC.numChildren);  // traces initial:1

while(holderMC.numChildren > 0) {
 holderMC.removeChildAt(0);
 trace("now there are:"+holderMC.numChildren); // traces now there are :0
}
myLoader.unload();

// Edit- also tried myLoader.unloadAndStop(); myLoader = null;

Any thoughts?

TIA

JG

+2  A: 

You definitely have something else going on here. First, how are you seeing the "intro.swf"? You are creating holderMC, and adding the loaded swf as a child, but when are you adding holderMC to the display list?

The proper way to remove a movie from the view would be:

holderMC.removeChild(myLoader);

In order to let the content of holderMC to be flagged for garbage collection you need to set it to null. So,

holderMC.removeChild(myLoader);
myLoader.unload(); // this will set the content (the movie itself) to null.
myLoader = null; // npw the loader can be garbage collected too

If you are doing a removeChild and it is still showing, then you will need to post more code to show where the problem really is.

sberry2A
Thank you for your answer! I *think* the problem lay in the fact that I was converting an old AS2 file to AS3 and when I started with a fresh file and used your advice the problem resolved. Thanks!
jerrygarciuh