Advanced Action Script 3.0

Post on 24-May-2015

1.705 views 1 download

Tags:

Transcript of Advanced Action Script 3.0

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 >> agonzalez@x-geom.netBlog >> 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 >> agonzalez@x-geom.netBlog >> http://x-geom.net/blog

• ¿ ANY QUESTIONS ?