I'm not sure but I think you don't correctly remove the onEnterFrame Event.
As you use the weakReference you miss the false in the remove method, you
should remove it that way:

 

removeEventListener(Event.ENTER_FRAME, onEnterFrame, false);

 

If this doesn't solve your problem, I usually set the instance to null after
a remove:

 

removeChild(dw);

dw = null;

 

I hope it helps.

 

Romu

www.soundstep.com

 

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Sander
Schuurman
Sent: 09 September 2008 12:18
To: Flash Coders List
Subject: [Flashcoders] removeChild madness

 

I know there's a lot written about the Garbage Collection, and removing
assets in AS3...

I'm trying to get my hands around it, but I'm still strugling ;)

 

A simple example:

 

I'm adding a MovieClip from the library, and I'm removing it as well, like a
toggle.

The MovieClip contains the System.totalMemory property.

If I keep toggling the MC on and of... the memory keeps going up...

I'm destroying the MC and removing it from the displayList...

But it's not cleared from the memory. What Am I missing?

 

ToggleCode:

 

private function toggleDebug() :void

{

            var dw:debugWindow_lib = getChildByName('debugWindow') as
debugWindow_lib;

            if (dw == null )

            {

                        var debugWindow:MovieClip = new debugWindow_lib();

                        debugWindow.name = "debugWindow";

                        addChild(debugWindow);

            }

            else

            {

                        dw.destroy();

                        removeChild(dw);

            }

}

 

Class

 

public class debugWindow_lib extends MovieClip

{

            public function debugWindow_lib()

            {

                        addEventListener(Event.ENTER_FRAME, onEnterFrame,
false, 0, true);

            }

 

            private function onEnterFrame( e :Event ) :void

            {

                        var tM:Number = System.totalMemory / 1024;

                        totalMemory.text = tM.toString();

            }

            public function destroy()

            {

                        removeEventListener(Event.ENTER_FRAME,
onEnterFrame);

            }

}

 

_______________________________________________

Flashcoders mailing list

Flashcoders@chattyfig.figleaf.com

http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to