AS3 - método unloadAndStop();

Hasta la versión 9 de FP, contábamos con el método unload() de la clase Loader para proceder a la descarga de aquellos contenidos que eran cargados por medio del método load() de dicha clase. Ahora bien, el problema surgía cuando se generaba la descarga de una película y:

Si contabas con audio o video, estos continuaban con su reproducción.

Continuaban abiertas aquellas conexiones que no han sido cerradas (netConnection, netStream, localConnection, etc)

Continuaban consumiendo recursos todos aquellos procesos de los cuales prescindimos al descargar la película (listeners que, sería razonable, sean eliminados al descargar la película)

Si bien existen motivos para que esto sea así, indudablemente es una molestia. A pesar de que la optimización de recursos es parte de nuestro desempeño, tratar de eliminar absolutamente todas aquellas referencias innecesarias que están haciendo que el Garbage Collector no las tenga en cuenta, es una actividad por demás engorrosa, molesta y llena de inconvenientes durante el proceso.

Por suerte, desde Flash Player 10, contamos con una solución. Solución parcial y aún con varios ajustes por hacer, pero solución al fin:

El método unloadAndStop();

Por medio del mismo no sólo se procede a la descarga de la película swf, sino que se intenta anular aquellos contenidos secundarios del mismo y detener la ejecución de comandos de dicho archivo, por lo tanto:

Se detienen aquellos sonidos que se estén ejecutando.

Se eliminan los listeners que hayan sido añadidos al escenario.

Se eliminan los eventos enterFrame, frameConstructed, exitFrame, activate y deactivate.

Se detienen los temporizadores.

Se eliminan las instancias de cámara (Camera).

Se eliminan las instancias del mic (Microphone).

Se detienen los clips de película.

En vistas a la optimización de recursos, definitivamente es mucho más ventajoso que el método unload(), y evita en gran parte aquellos malabares que debíamos hacer antes de eliminar una película. De todos modos, si bien este es el camino, considero que aún queda mucho por hacer al respecto; sería mucho más productivo nuestro tiempo, y por ende, más interesantes nuestros desarrollos, si el proceso para mantener optmizadas nuestras películas fuese más transparente de lo que actualmente es. Esperemos se mejore día a día en esta cuestión y encontremos nuevas soluciones en versiones posteriores de FP. Si bien queda mucho por hacer, por suerte, el método unloadAndStop() es un buen indicio de estar yendo por el buen camino…

Comments

Leave a Reply