Fiona Passantino
Fiona Passantino

Reputation: 33

Action script 3.0 issue, my swf not unloading

Having a little trouble with an Flash for iOS application! I have a button "start" which loads an external swf. Then I have a different button, "home", which should do three things:

  1. unload the external swf
  2. stop all sounds
  3. return to frame 1

It all SEEMS to work, but then it appears that the SWF never unloads! I keep hearing it over and over again.

  //code on frame follows...mythbutt_home


 stop();

//home button

mythbutt_home.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame_4);

function fl_ClickToGoToAndStopAtFrame_4(event:MouseEvent):void
{
removeChild(fl_ProLoader_3);

}
mythbutt_home.addEventListener(MouseEvent.CLICK, fl_ClickToStopAllSounds);

function fl_ClickToStopAllSounds(event:MouseEvent):void
{
SoundMixer.stopAll();
}

mythbutt_home.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame_1);

function fl_ClickToGoToAndStopAtFrame_1(event:MouseEvent):void
{
gotoAndStop(1);
}


//start button

start_button_aboriginal.addEventListener(MouseEvent.CLICK, fl_ClickToLoadUnloadSWF_3);

import fl.display.ProLoader;
var fl_ProLoader_3:ProLoader;

//This variable keeps track of whether you want to load or unload the SWF
var fl_ToLoad_3:Boolean = true;

function fl_ClickToLoadUnloadSWF_3(event:MouseEvent):void
{
if(fl_ToLoad_3)
{
    fl_ProLoader_3 = new ProLoader();
    fl_ProLoader_3.load(new URLRequest("myths/myth_aboriginal.swf"));
    addChild(fl_ProLoader_3);
    fl_ProLoader_3.x = 114;
    fl_ProLoader_3.y = 41;
 }
 else
 {
    fl_ProLoader_3.unload();
    removeChild(fl_ProLoader_3);
    fl_ProLoader_3 = null;
}
// Toggle whether you want to load or unload the SWF
fl_ToLoad_3 = !fl_ToLoad_3;
}

Upvotes: 0

Views: 550

Answers (1)

M4tchB0X3r
M4tchB0X3r

Reputation: 1531

First off you shouldnt be doing this over multible Frames. It would be best to use external .as files. To properly unload the swf you need to delete all refrences to the swf itself and objects in the swf. This includes EventListeners for which you should use a weak refference like this:

// params: eventName, listener, capturePhase, priority, useWeakReference
someObj.addEventListener("eventName",myFunct,false,0,true);

and use unloadAndStop(); and remove first!

removeChild(fl_ProLoader_3);
fl_ProLoader_3.unloadAndStop();
fl_ProLoader_3 = null;

And trace the loader after you null it, and see what the output says!

Upvotes: 3

Related Questions