Este documento presenta una introducción a temas avanzados de ActionScript 3.0. Explica las bibliotecas principales de ActionScript y Flex, la arquitectura del Flash Player, el recolector de basura y su funcionamiento, y recomendaciones para mejorar el rendimiento como usar tipos de datos estrictos y la clase Vector. Finalmente, menciona características avanzadas como el uso de 3D en Flash.
2. Alberto González
• CTO de Activ (AATC).
• Consultor de Adobe Systems Inc. en México
enfocado en la plataforma para RIAs.
• Co – manager de RIActive (AUG).
• Instructor de diversas tecnologías de programación
para web.
Twitter ID >> @albertx
E-mail >> agonzalez@x-geom.net
Blog >> http://x-geom.net/blog
5. Archivos .swc
• Es un empaquetado de clases (biblioteca de
clases)
• Se puede abrir con cualquier descompresor de
archivos (WinZip, WinRar, 7zip, etc.)
• Contiene los sig archivos:
– catalog.xml >> enlista el contenido del paquete
– .swf >> es quien contiene las clases
– [ assets >> archivos .png, .gif, .mp3, etc. ]
9. Garbage Collector
• Es un proceso que se encarga de liberar la
memoria utilizada por objetos que ya no están
en uso en la aplicación.
• Un objecto puede considerarse como “que ya
no está en uso” cuando no existen referencias
hacia él desde otros objetos activos.
10. Garbage Collector
• Utiliza dos algoritmos para su funcionamiento.
Conteo de referencias
• Lleva un conteo de las
referencias que tiene cada
objeto
• Cuando un objeto tiene 0
referencias hacia el
entonces lo considera
para eliminarlo
Barrido de objetos
• Realiza un barrido por la
lista general de objetos
gráficos
• Cuando el/los objeto(s)
no pertenecen a dicha
lista y no tienen ninguna
referencia hacia ellos
entonces los considera
para su eliminación
12. Garbage Collector
• No tenemos forma “ejecutarlo” cuando
deseamos *
• Se ejecuta por sí solo cuando el sistema lo
requiere.
• Herramientas disponibles para manipularlo:
– Flex Profiling
– flash.system.System
• gc() // FlashPlayer >= 9.0.115 | Debugger
13. Otros métodos y propiedades de la
clase << System >>
• exit()
• pause()
• resume()
• totalMemory:uint
16. 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.
17. 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, deactivate y eventos de stage de 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 DisplayObject no se puede volver a mostrar en el Flash Player.
19. Flujo de trabajo de Flash Player en un
frame
[Evento] enterFrame
Constructores
[Evento] frameConstructed
Scripts del frame
[Evento] exitFrame
Rendereo del Frame
21. Tipos de datos estrictos
• Siempre que se pueda, utilizar el tipo de dato
correcto para las variables, constantes, etc. (se
ejecutan mucho más rápido)
• Trata de evitar el uso del tipo de dato “ * “
• Utilizar el modo de compilación “estricto”
22. Arreglos “monotipeados”
• A partir del Flash Player 10 se le incorporó la
clase << Vector >> a ActionScript.
• La clase << Vector >> nos permite trabajar con
arreglos especificando el tipo de dato que
tendrán los elementos internos.
• La clase << Vector >> trabaja mucho más rápido
que la clase << Array >>
• Contiene prácticamente los mismos métodos y
propiedades que la clase << Array >> ( push, pop,
join, reverse, map, …)
23. Clase << Vector >>
var v:Vector.<String> = new Vector.<String>();
v.push("Adobe");
v.push("Systems");
v.push("Incorporated");
v.reverse();
trace(v.join(" < ")); // Incorporated < Systems < Adobe
24. Menos clases dinámicas
• << MovieClip >> es la clase dinámica más
utilizada en proyectos Flash.
• Si no requerimos de la funcionalidad de línea
de tiempo utilizar mejor la clase << Sprite >>
25. Usa 3D en Flash (2.5D)
• A partir de Flash Player 10
• Completamente integrado al DisplayObject
• La propiedad Z no ordena únicamente dibuja
• Herramientas y clases para manejo de 3D
disponibles en Flash CS4
– 3D Rotation Tool
– Cámaras
– Vanishing Points
26. GRACIAS!!!
• Alberto González información de contacto
Twitter ID >> @albertx
E-mail >> agonzalez@x-geom.net
Blog >> http://x-geom.net/blog
• ¿ ANY QUESTIONS ?