Mira.. no he leido ni interpretado tu codigo, pero se a que te refieres con chupar memoria, sobre todo en proyectos grandes.
Para que el Garbage Collector esté activo de manera a eliminar funciones X cuando ya no son requeridas debes declararlo en tu Listener.. alguna vez escribi sobre esto, pero lo unico que recibi fueron palos.
Te pongo un ejemplo para que puedas adaptarlo a tu poyecto, y espero te sirva de modelo con un listener cualquiera:
Código:
botn.addEventListener(tipoEvento.NOMBRE_EVENTO, funcion, userCapture, priority, weakReference);
Bueno, la estructura normal ya la conoces, o sea
intancia.
addEventListener... dentro de este listener ponemos el famoso parametro o tipo de evento
MouseEvent.MOUSE_DOWN, y luego el nombre de la funcion que invoca, llamale como quieras.
los otros elementos son:
en rojo el
userCapture, que nos permitira controlar el flujo de eeventos, pero no se si te sera util ahora, por ende, el parametro debes declaralo por defecto en
FALSE
en azul, esta el
priority, que nos permite asiganale prioridades segun el orden que queremos organizar nuestros detectores, por lo general va un numero entero, donde a mayor sea el numero, mayor prioridad ganara con respecto a los otros listener.. mientras puedes dejarlo en cero, total, no tienes ese problema
y en verde, tu posible camino de luz, o sea el
weakReference, que por defecto viene como
FALSE, y activa el Colector de basura en AS 3, y actua cuando ya no se esta referenciando ese listener en el proceso... por lo general ocurrira cuando se detenga la funcion, o se elimine el listener, mediante
removeChildAT, o bien un
removeEventListener. Como viene en FALSE, debes cambiarlo a True.
La sintaxis de tus listener debe quedar asi:
cl01_al01_btn.addEventListener(MouseEvent.CLICK, click_cl01_al01,
false,
0,
true);
entonces ya habilitas en Garbage collector para elimnarlo de tu memoria cuando ya no este en uso... asi que estos ultimos parametros te serviran para tal efecto, y actuara de pastilla de chikitolina para tu monstruo.
Espero te sirva.. lo quite de algunos libros, y la documentacion de adobe, cuando tuve un problema similar