advanced action script 3.0
TRANSCRIPT
ActionScript 3.0[ Temas Avanzados ]
Alberto González
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 >> @albertxE-mail >> [email protected] >> http://x-geom.net/blog
Temas a tratar
Bibliotecas ActionScript
Core ActionScript 3.0 (playerglobal.swc)
Flex libsflex.swc
framework.swcrpc.swc…
AIR libsairglobal.swc
airframework.swc
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. ]
FLASH PLAYER
Arquitectura del Flash Player
GARBAGE COLLECTOR
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.
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
Garbage Collector (Sweep)
http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html
A eliminar
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
Otros métodos y propiedades de la clase << System >>
• exit()• pause()• resume()• totalMemory:uint
DEMO“Profiling” de aplicación desde Flex Builder
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, 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.
PARA AMANTES DE LA LINEA DE TIEMPO…
Flujo de trabajo de Flash Player en un frame
[Evento] enterFrame
Constructores
[Evento] frameConstructed
Scripts del frame
[Evento] exitFrame
Rendereo del Frame
Y ADEMÁS…
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”
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, …)
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
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 >>
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
GRACIAS!!!
• Alberto González información de contactoTwitter ID >> @albertxE-mail >> [email protected] >> http://x-geom.net/blog
• ¿ ANY QUESTIONS ?