Y bue... la verdad que para liberar memoria, hay distintos procesos, ya sea si son Bitmaps, sonidos etc...
Mira este enlace, hay una fragmento que habla del Garbage collector, para liberar archivos externos, con una funcion unloadAndStop();...
http://www.slideshare.net/albertx/ad...tion-script-30
no te leas el archivo que esta en el slide, lee el articulo desarrollado mas abajo, que habla de eso.. o bajate el archivo.. tal vez te brinde una idea mejor..
sobre todo estas lineas.. capaz te brinden una pista:
Cita: # Loader.unloadAndStop()
# Problemas con la carga de elementos gráficos externos (Loader)
En ocasiones los sonidos no se detenían cuando descargábamos un video u otro swf con audio.
El recolector de basura no podía eliminar la película cargada incluso aunque ya no la estuviéramos ocupando.
Los video se seguían reproduciendo por “detrás” aún cuando ya no se ocupaba el clip.
# Loader.unloadAndStop()
Disponible desde Flash Player 10
Pasa por todo el árbol de “DisplayObjects” del swf cargado realizando lo sig:
Libera memoria de mapas de bits
Detiene la ejecución de los sonidos
Detiene la ejecución de los videos
Detiene todas las animaciones de los MovieClips
Elimina los “handlers” para los eventos enterFrame, frameConstructed, exitFrame, activate, deactivatey eventos de stagede los elementos internos
Detiene cualquier carga de datos que se esté ejecutando desde los elementos internos (FileReference, sockets, http, file:)
Todas las instancias de la clase << Timer >> son detenidas
Cámara y Micrófono son apagados
El DisplayObjectno se puede volver a mostrar en el Flash Player.
Porque usas 2 If similares en tu funcion de eliminar removeChildAt();, o sea, no siilares, repetidas mejor dicho.
Lastimosamente no tengo tanto tiempo, puesto que me gusta este tipo de cosas, donde hay objetos misteriosos que no funcan como queremos, o si no, tal vez lo analizaba por mi cuenta tambien, pero el tiempo apremia, y solo te puedo orientar, sobre cosas que ya lei antes.