I have tried many approaches to unloading my swf, but to no avail, the video sounds within my laoded swf keep playing even once the swf has been loaded.
I have created a universal loader as follows:
var loader:Loader = new Loader();
I then load various swf's into a movie clip named mov_contentLoader, for example the video swf is loaded as follows:
loader.load(new URLRequest("video.swf")); //assign SWF url to loader
mov_contentLoader.addChild(loader); //add loaded content to movi clip
I then have a generic "exit" button, based on the state of the application, certain windows are closed, swf's are unloaded etc. For my video.swf file, when the exit button is clicked, I call the unloadAndStop(); method on the loader as follows:
loader.unloadAndStop(); //unload all content, do some garbage cleanup
mov_contentLoader.removeChildAt(0); //just to be safe, a second layer of reassurance ??
The SWF is unloaded, but for the life of me I can NOT get the sounds to stop! I even resorted to adding stage listeners on the video.swf to listen for an exiting state, but that still did not stop video sounds.
If I load the video.swf in again and play a different video, the two soundtracks play ontop of each other.
Any guidance, as always, is greatly accepted and appreciated.
Simon
After much research I have solved this problem. In the hope that this will make someone's life a lot easier, here was the issue:
The
unloadAndStop();
method removes any event listeners, instances, objects etc from the loaded SWF. In my case I had videos, and IF the video was still playing when the user exited (and the loaded unloaded the content) the sounds would carry on. It seems that one thing theunloadAndStop();
function does NOT do is stop all sounds.The solution? I attached an event listener to my loader, and after the content was successfully UNLOADED, I called the
SoundMixer.stopAll();
function which ensured no sounds carried on playing! This DOES however mean that if you had ambient background sounds all along, they would stop too. You could go even further and get the current time of your ambient sounds and simply "restart" them immediately from that point in time.My simple vent listener looks like this:
I trust this will help someone! It's a little "hacky" but it does the job just fine.
Kind regards, Simon