Este documento presenta una guía para la programación con ActionScript 3.0. Explica los fundamentos de la programación orientada a objetos en ActionScript, incluyendo conceptos como clases, herencia, interfaces y temas avanzados. También proporciona ejemplos de código para ilustrar los conceptos discutidos. La guía está destinada a ayudar a los desarrolladores a aprender y dominar el lenguaje de programación ActionScript 3.0.
10. 1
Capítulo 1: Información sobre este manual
En este manual se ofrecen unas bases para el desarrollo de aplicaciones en Adobe® ActionScript® 3.0. Para comprender
mejor las ideas y las técnicas descritas, debe estar familiarizado con conceptos de programación generales como, por
ejemplo, tipos de datos, variables, bucles y funciones. También hay que conocer conceptos básicos sobre la
programación orientada a objetos, como los conceptos de clase y herencia. Un conocimiento previo de ActionScript
1.0 o ActionScript 2.0 es útil pero no necesario.
Utilización de este manual
Los capítulos de este manual están organizados en los siguientes grupos lógicos para ayudarle a encontrar áreas
relacionadas de la documentación de ActionScript:
Capítulo Descripción
En los capítulos 2 a 5 se ofrece información general Se abordan los conceptos básicos de ActionScript 3.0, incluida la sintaxis del
sobre la programación en ActionScript. lenguaje, sentencias, operadores y programación ActionScript orientada a objetos.
En los capítulos 6 a 11, se describen las clases y los tipos Se describen los tipos de datos de nivel superior de ActionScript 3.0.
de datos básicos de ActionScript 3.0.
En los capítulos 12 a 32, se describen las API de Flash Se describen funciones importantes implementadas en paquetes y clases
Player y de Adobe AIR. específicos de Adobe Flash Player y Adobe AIR, como el control de eventos, los
objetos y la lista de visualización, las conexiones de red y las comunicaciones, la
entrada y salida de archivos, la interfaz externa, el modelo de seguridad de
aplicaciones, etc.
Este manual también contiene numerosos archivos de ejemplo que ilustran conceptos de programación de
aplicaciones para clases importantes o utilizadas frecuentemente. Los archivos de ejemplo se empaquetan de forma
que resulten fáciles de cargar y utilizar con Adobe® Flash® CS4 Professional y pueden incluir archivos envolventes. Sin
embargo, el núcleo del código de ejemplo es puro código ActionScript 3.0 que se puede utilizar en el entorno de
desarrollo que se prefiera.
Se puede escribir y compilar código ActionScript 3.0 de varias maneras:
• Mediante el entorno de desarrollo Adobe Flex Builder 3.
• Utilizando cualquier editor de texto y un compilador de línea de comandos, como el proporcionado con Flex
Builder 3.
• Usando la herramienta de edición Adobe ® Flash® CS4 Professional.
Para obtener más información sobre los entornos de desarrollo de ActionScript, consulte “Introducción a ActionScript
3.0” en la página 4
Para comprender los ejemplos de código de este manual no es necesario tener experiencia previa en el uso de entornos
de desarrollo integrados para ActionScript, como Flex Builder o la herramienta de edición de Flash. No obstante, es
conveniente consultar la documentación de estas herramientas para aprender a utilizarlas y a escribir y compilar
código ActionScript 3.0. Para obtener más información, consulte “Acceso a la documentación de ActionScript” en la
página 2.
11. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH 2
Información sobre este manual
Acceso a la documentación de ActionScript
Este manual se centra en describir ActionScript 3.0, un completo y eficaz lenguaje de programación orientado a
objetos. No incluye una descripción detallada del proceso de desarrollo de aplicaciones ni del flujo de trabajo en una
herramienta o arquitectura de servidor específica. Por ello, además de leer Programación con ActionScript 3.0, es
recomendable consultar otras fuentes de documentación al diseñar, desarrollar, probar e implementar aplicaciones de
ActionScript 3.0.
Documentación de ActionScript 3.0
En este manual se explican los conceptos relacionados con la programación en ActionScript 3.0, se muestran los
detalles de implementación y se proporcionan ejemplos que ilustran las características importantes del lenguaje. No
obstante, este manual no es una referencia del lenguaje exhaustiva. Para una referencia completa, consulte la
Referencia del lenguaje y componentes ActionScript 3.0, en la que se describen todas las clases, métodos, propiedades
y eventos del lenguaje. La Referencia del lenguaje y componentes ActionScript 3.0 proporciona información de
referencia detallada sobre el núcleo del lenguaje, los componentes de la herramienta de edición de Flash (paquetes fl)
y las API de Flash Player y de Adobe AIR (paquetes flash).
Documentación de Flash
Si utiliza la herramienta de edición de Flash, es posible que desee consultar estos manuales:
Manual Descripción
Utilización de Flash Describe la manera de desarrollar aplicaciones Web dinámicas en la herramienta
de edición de Flash.
Programación con ActionScript 3.0 Describe el uso específico del lenguaje ActionScript 3.0 y la API principal de Flash
Player y de Adobe AIR
Referencia del lenguaje y componentes ActionScript 3.0 Proporciona información sobre la sintaxis y el uso, así como ejemplos de código,
para los componentes de la herramienta de edición de Flash y la API de
ActionScript 3.0.
Utilización de componentes ActionScript 3.0 Explica los detalles del uso de componentes para desarrollar aplicaciones creadas
por Flash.
Desarrollo de aplicaciones de Adobe AIR con Flash CS4 Describe cómo desarrollar e implementar aplicaciones de Adobe AIR utilizando
Professional ActionScript 3.0 y la API de Adobe AIR en Flash
Aprendizaje de ActionScript 2.0 en Adobe Flash Proporciona información general sobre la sintaxis de ActionScript 2.0 y sobre
cómo utilizar ActionScript 2.0 al trabajar con distintos tipos de objetos
Referencia del lenguaje ActionScript 2.0 Proporciona información sobre la sintaxis y el uso, así como ejemplos de código,
para los componentes de la herramienta de edición de Flash y la API de
ActionScript 2.0.
Utilización de componentes ActionScript 2.0 Explica de forma detallada cómo utilizar componentes de ActionScript 2.0 para
desarrollar aplicaciones creadas por Flash.
Referencia del lenguaje de componentes ActionScript 2.0 Describe cada componente disponible en la versión 2 de la arquitectura de
componentes de Adobe, junto con su API
Ampliación de Flash Describe los objetos, métodos y propiedades disponibles en la API de JavaScript
Introducción a Flash Lite 2.x Explica cómo utilizar Adobe® Flash® Lite™ 2.x para desarrollar aplicaciones y
proporciona información sobre la sintaxis y el uso, así como ejemplos de código
para las funciones de ActionScript disponibles en Flash Lite 2.x
12. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH 3
Información sobre este manual
Manual Descripción
Desarrollo de aplicaciones de Flash Lite 2.x Explica cómo desarrollar aplicaciones de Flash Lite 2.x
Introducción a ActionScript en Flash Lite 2.x Ofrece una introducción al desarrollo de aplicaciones Flash Lite 2.x y describe
todas las funciones de ActionScript disponibles para los desarrolladores de Flash
Lite 2.x
Referencia del lenguaje ActionScript de Flash Lite 2.x Proporciona información sobre la sintaxis y el uso, así como ejemplos de código,
de la API de ActionScript 2.0 disponible en Flash Lite 2.x
Introducción a Flash Lite 1.x Proporciona una introducción a Flash Lite 1.x y describe el modo de comprobar
contenido con el emulador de Adobe® Device Central CS4
Desarrollo de aplicaciones de Flash Lite 1.x Describe la manera de desarrollar aplicaciones para dispositivos móviles con Flash
Lite 1.x
Aprendizaje de ActionScript en Flash Lite 1.x Explica cómo utilizar ActionScript en aplicaciones de Flash Lite 1.x y describe
todas las funciones de ActionScript disponibles en Flash Lite 1.x
Referencia del lenguaje ActionScript de Flash Lite 1.x Describe la sintaxis y el modo de uso de los elementos de ActionScript disponibles
en Flash Lite 1.x
Recursos de aprendizaje de ActionScript
Además del contenido de estos manuales, Adobe proporciona regularmente artículos actualizados, ideas de diseño y
ejemplos en el Centro de desarrollo de Adobe y el Centro de diseño de Adobe.
Centro de desarrollo de Adobe
El Centro de desarrollo de Adobe contiene la información más actualizada sobre ActionScript, artículos sobre el
desarrollo de aplicaciones reales e información sobre nuevos problemas importantes. Consulte el Centro de desarrollo
de Adobe en http://www.adobe.com/es/devnet/.
Centro de diseño de Adobe
Póngase al día en diseño digital y gráficos en movimiento. Examine la obra de importantes artistas, descubra las nuevas
tendencias de diseño y mejore sus conocimientos con tutoriales, flujos de trabajo clave y técnicas avanzadas. Consulte
el centro cada quince días para ver tutoriales y artículos nuevos e inspirarse con las creaciones de las galerías. Consulte
el centro de diseño en www.adobe.com/designcenter/.
13. 4
Capítulo 2: Introducción a ActionScript
3.0
En este capítulo se ofrece información general sobre Adobe® ActionScript® 3.0, una de las versiones más recientes e
innovadoras de ActionScript.
ActionScript
ActionScript es el lenguaje de programación para los entornos de tiempo de ejecución de Adobe® Flash® Player y
Adobe® AIR™. Entre otras muchas cosas, activa la interactividad y la gestión de datos en el contenido y las aplicaciones
de Flash, Flex y AIR.
ActionScript se ejecuta mediante la máquina virtual ActionScript (AVM), que forma parte de Flash Player y AIR. El
código de ActionScript se suele compilar en un formato de código de bytes (un tipo de lenguaje que los ordenadores
pueden escribir y comprender) mediante un compilador, como el incorporado en Adobe® Flash® CS4 Professional o
Adobe® Flex™ Builder™ o el que está disponible en el SDK de Adobe® Flex™. El código de bytes está incorporado en los
archivos SWF ejecutados por Flash Player y AIR.
ActionScript 3.0 ofrece un modelo de programación robusto que resultará familiar a los desarrolladores con
conocimientos básicos sobre programación orientada a objetos. Algunas de las principales funciones de ActionScript
3.0 que mejoran las versiones anteriores son:
• Una nueva máquina virtual de ActionScript, denominada AVM2, que utiliza un nuevo conjunto de instrucciones
de código de bytes y proporciona importantes mejoras de rendimiento.
• Una base de código de compilador más moderna que realiza mejores optimizaciones que las versiones anteriores
del compilador.
• Una interfaz de programación de aplicaciones (API) ampliada y mejorada, con un control de bajo nivel de los
objetos y un auténtico modelo orientado a objetos.
• Una API XML basada en la especificación de ECMAScript para XML (E4X) (ECMA-357 edición 2). E4X es una
extensión del lenguaje ECMAScript que añade XML como un tipo de datos nativo del lenguaje.
• Un modelo de eventos basado en la especificación de eventos DOM (modelo de objetos de documento) de nivel 3.
Ventajas de ActionScript 3.0
ActionScript 3.0 aumenta las posibilidades de creación de scripts de las versiones anteriores de ActionScript. Se ha
diseñado para facilitar la creación de aplicaciones muy complejas con conjuntos de datos voluminosos y bases de
código reutilizables y orientadas a objetos. Aunque no se requiere para el contenido que se ejecuta en Adobe Flash
Player, ActionScript 3.0 permite introducir unas mejoras de rendimiento que sólo están disponibles con AVM2, la
nueva máquina virtual. El código ActionScript 3.0 puede ejecutarse con una velocidad diez veces mayor que el código
ActionScript heredado.
La versión anterior de la máquina virtual ActionScript (AVM1) ejecuta código ActionScript 1.0 y ActionScript 2.0.
Flash Player 9 y 10 admiten AVM9 por compatibilidad con contenido existente y heredado de versiones anteriores.
Para obtener más información, consulte “Compatibilidad con versiones anteriores” en la página 7.
14. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH 5
Introducción a ActionScript 3.0
Novedades de ActionScript 3.0
Aunque ActionScript 3.0 contiene muchas clases y funciones que resultarán familiares a los programadores de
ActionScript, la arquitectura y los conceptos de ActionScript 3.0 difieren de las versiones anteriores de ActionScript.
ActionScript 3.0 incluye algunas mejoras como, por ejemplo, nuevas funciones del núcleo del lenguaje y una API de
Flash Player mejorada que proporciona un mayor control de objetos de bajo nivel.
Nota: las aplicaciones de Adobe® AIR™ también pueden utilizar las API de Flash Player.
Funciones del núcleo del lenguaje
El núcleo del lenguaje está formado por los bloques básicos del lenguaje de programación, como sentencias,
expresiones, condiciones, bucles y tipos. ActionScript 3.0 contiene muchas funciones nuevas que aceleran el proceso
de desarrollo.
Excepciones de tiempo de ejecución
ActionScript 3.0 notifica más situaciones de error que las versiones anteriores de ActionScript. Las excepciones de
tiempo de ejecución se utilizan en situaciones de error frecuentes y permiten mejorar la depuración y desarrollar
aplicaciones para gestionar errores de forma robusta. Los errores de tiempo de ejecución pueden proporcionar trazas
de pila con la información del archivo de código fuente y el número de línea. Esto permite identificar rápidamente los
errores.
Tipos de tiempo de ejecución
En ActionScript 2.0, las anotaciones de tipos eran principalmente una ayuda para el desarrollador; en tiempo de
ejecución, se asignaban los tipos dinámicamente a todos los valores. En ActionScript 3.0, la información de tipos se
conserva en tiempo de ejecución y se utiliza con diversos fines. Flash Player y Adobe AIR realizan una verificación de
tipos en tiempo de ejecución, mejorando la seguridad de los tipos del sistema. La información de tipos también se
utiliza para especificar variables en representaciones nativas de la máquina, lo que mejora el rendimiento y reduce el
uso de memoria.
Clases cerradas
ActionScript 3.0 introduce el concepto de clases cerradas. Una clase cerrada posee únicamente el conjunto fijo de
propiedades y métodos definidos durante la compilación; no es posible añadir propiedades y métodos adicionales.
Esto permite realizar una comprobación más estricta en tiempo de compilación, lo que aporta una mayor solidez a los
programas. También mejora el uso de memoria, pues no requiere una tabla hash interna para cada instancia de objeto.
Además, es posible utilizar clases dinámicas mediante la palabra clave dynamic. Todas las clases de ActionScript 3.0
están cerradas de forma predeterminada, pero pueden declararse como dinámicas con la palabra clave dynamic.
Cierres de métodos
ActionScript 3.0 permite que un cierre de método recuerde automáticamente su instancia de objeto original. Esta
función resulta útil en la gestión de eventos. En ActionScript 2.0, los cierres de métodos no recordaban la instancia de
objeto de la que se habían extraído, lo que provocaba comportamientos inesperados cuando se llamaba al cierre de
método. La clase mx.utils.Delegate permitía solucionar este problema, pero ya no es necesaria.
15. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH 6
Introducción a ActionScript 3.0
ECMAScript for XML (E4X)
ActionScript 3.0 implementa ECMAScript for XML (E4X), recientemente estandarizado como ECMA-357. E4X
ofrece un conjunto fluido y natural de construcciones del lenguaje para manipular XML. Al contrario que las API de
análisis de XML tradicionales, XML con E4X se comporta como un tipo de datos nativo del lenguaje. E4X optimiza el
desarrollo de aplicaciones que manipulan XML, pues reduce drásticamente la cantidad de código necesario. Para
obtener más información sobre la implementación de E4X en ActionScript 3.0, consulte “Trabajo con XML” en la
página 232.
Para ver la especificación de E4X publicada por ECMA, visite www.ecma-international.org.
Expresiones regulares
ActionScript 3.0 ofrece compatibilidad nativa con expresiones regulares, que permiten encontrar y manipular cadenas
rápidamente. ActionScript 3.0 implementa la compatibilidad con expresiones regulares tal y como se definen en la
especificación del lenguaje ECMAScript (ECMA-262) edición 3.
Espacios de nombres
Los espacios de nombres son similares a los especificadores de acceso tradicionales que se utilizan para controlar la
visibilidad de las declaraciones (public, private, protected). Funcionan como especificadores de acceso
personalizados, con nombres elegidos por el usuario. Los espacios de nombres incluyen un identificador de recursos
universal (URI) para evitar colisiones y también se utilizan para representar espacios de nombres XML cuando se
trabaja con E4X.
Nuevos tipos simples
ActionScript 2.0 tiene un solo tipo numérico, Number, un número de coma flotante con precisión doble. ActionScript
3.0 contiene los tipos int y uint. El tipo int es un entero de 32 bits con signo que permite al código ActionScript
aprovechar las capacidades matemáticas de manipulación rápida de enteros de la CPU. Este tipo es útil para
contadores de bucle y variables en las que se usan enteros. El tipo uint es un tipo entero de 32 bits sin signo que resulta
útil para valores de colores RGB y recuentos de bytes, entre otras cosas.
Funciones de la API de Flash Player
Las API de Flash Player en ActionScript 3.0 contienen muchas de las clases que permiten controlar objetos a bajo nivel.
La arquitectura del lenguaje está diseñada para ser mucho más intuitiva que en versiones anteriores. Hay demasiadas
clases nuevas para poder tratarlas con detalle, de modo que en las siguientes secciones se destacan algunos cambios
importantes.
Nota: las aplicaciones de Adobe® AIR™ también puede utilizar las API de Flash Player.
Modelo de eventos DOM3
El modelo de eventos del modelo de objetos de documento de nivel 3 (DOM3) ofrece un modo estándar para generar
y gestionar mensajes de eventos de forma que los objetos de las aplicaciones puedan interactuar y comunicarse,
mantener su estado y responder a los cambios. Diseñado a partir de la especificación de eventos DOM de nivel 3 del
World Wide Web Consortium, este modelo proporciona un mecanismo más claro y eficaz que los sistemas de eventos
disponibles en versiones anteriores de ActionScript.
Los eventos y los eventos de error se encuentran en el paquete flash.events. La arquitectura de componentes de Flash
utiliza el mismo modelo de eventos que la API de Flash Player, de forma que el sistema de eventos está unificado en
toda la plataforma Flash.
16. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH 7
Introducción a ActionScript 3.0
API de la lista de visualización
La API de acceso a la lista de visualización de Flash Player y Adobe AIR (el árbol que contiene todos los elementos
visuales de una aplicación Flash) se compone de clases para trabajar con elementos visuales simples.
La nueva clase Sprite es un bloque básico ligero, similar a la clase MovieClip pero más apropiado como clase base de
los componentes de interfaz de usuario. La nueva clase Shape representa formas vectoriales sin procesar. Es posible
crear instancias de estas clases de forma natural con el operador new y se puede cambiar el elemento principal en
cualquier momento, de forma dinámica.
La administración de profundidad es ahora automática y está incorporada en Flash Player y Adobe AIR, por lo que ya
no es necesario asignar valores de profundidad. Se proporcionan nuevos métodos para especificar y administrar el
orden z de los objetos.
Gestión de contenido y datos dinámicos
ActionScript 3.0 contiene mecanismos para cargar y gestionar elementos y datos en la aplicación, que son intuitivos y
coherentes en toda la API. La nueva clase Loader ofrece un solo mecanismo para cargar archivos SWF y elementos de
imagen, y proporciona una forma de acceso a información detallada sobre el contenido cargado. La clase URLLoader
proporciona un mecanismo independiente para cargar texto y datos binarios en aplicaciones basadas en datos. La clase
Socket proporciona una forma de leer y escribir datos binarios en sockets de servidor en cualquier formato.
Acceso a datos de bajo nivel
Diversas API proporcionan acceso de bajo nivel a los datos, lo que supone una novedad en ActionScript. La clase
URLStream, implementada por URLLoader, proporciona acceso a los datos como datos binarios sin formato mientras
se descargan. La clase ByteArray permite optimizar la lectura, escritura y utilización de datos binarios. La nueva API
Sound proporciona control detallado del sonido a través de las clases SoundChannel y SoundMixer. Las nuevas API
relacionadas con la seguridad proporcionan información sobre los privilegios de seguridad de un archivo SWF o
contenido cargado, lo que permite gestionar mejor los errores de seguridad.
Trabajo con texto
ActionScript 3.0 contiene un paquete flash.text para todas las API relacionadas con texto. La clase TextLineMetrics
proporciona medidas detalladas para una línea de texto en un campo de texto; sustituye al método
TextFormat.getTextExtent() en ActionScript 2.0. La clase TextField contiene una serie de nuevos métodos
interesantes de bajo nivel que pueden ofrecer información específica sobre una línea de texto o un solo carácter en un
campo de texto. Dichos métodos son: getCharBoundaries(), que devuelve un rectángulo que representa el recuadro
de delimitación de un carácter, getCharIndexAtPoint(), que devuelve el índice del carácter en un punto
especificado, y getFirstCharInParagraph(), que devuelve el índice del primer carácter en un párrafo. Los métodos
de nivel de línea son: getLineLength(), que devuelve el número de caracteres en una línea de texto especificada, y
getLineText(), que devuelve el texto de la línea especificada. Una nueva clase Font proporciona un medio para
administrar las fuentes incorporadas en archivos SWF.
Compatibilidad con versiones anteriores
Como siempre, Flash Player proporciona compatibilidad completa con el contenido publicado previamente con
versiones anteriores. Cualquier contenido que se ejecutara en versiones anteriores de Flash Player puede ejecutarse en
Flash Player 9. Sin embargo, la introducción de ActionScript 3.0 en Flash Player 9 presenta algunos retos de
interoperabilidad entre el contenido antiguo y el contenido nuevo que se ejecuta en Flash Player 9. Algunos de los
problemas de compatibilidad que pueden surgir son:
• No se puede combinar código ActionScript 1.0 ó 2.0 con código ActionScript 3.0 en un archivo SWF.
17. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH 8
Introducción a ActionScript 3.0
• El código ActionScript 3.0 puede cargar un archivo SWF escrito en ActionScript 1.0 ó 2.0, pero no puede acceder a
las variables y funciones del archivo SWF.
• Los archivos SWF escritos en ActionScript 1.0 ó 2.0 no pueden cargar archivos SWF escritos en ActionScript 3.0.
Esto significa que los archivos SWF creados en Flash 8 o Flex Builder 1.5 o versiones anteriores no pueden cargar
archivos SWF de ActionScript 3.0.
La única excepción a esta regla es que un archivo SWF de ActionScript 2.0 puede sustituirse a sí mismo por un
archivo SWF de ActionScript 3.0, siempre y cuando el archivo SWF de ActionScript 2.0 no haya cargado ningún
elemento en ninguno de sus niveles. Para ello, el archivo SWF de ActionScript 2.0 debe realizar una llamada a
loadMovieNum(), pasando un valor 0 al parámetro level.
• En general, los archivos SWF escritos en ActionScript 1.0 ó 2.0 se deben migrar si van a funcionar de forma
conjunta con los archivos SWF escritos en ActionScript 3.0. Por ejemplo, supongamos que se ha creado un
reproductor de medios utilizando ActionScript 2.0. El reproductor carga distinto contenido que también se creó
utilizando ActionScript 2.0. No es posible crear nuevo contenido en ActionScript 3.0 y cargarlo en el reproductor
de medios. Es necesario migrar el reproductor de vídeo a ActionScript 3.0.
No obstante, si se crea un reproductor de medios en ActionScript 3.0, dicho reproductor puede realizar cargas
sencillas del contenido de ActionScript 2.0.
En la siguiente tabla se resumen las limitaciones de las versiones anteriores de Flash Player en lo referente a la carga de
nuevo contenido y a la ejecución de código, así como las limitaciones relativas a la reutilización de scripts entre
archivos SWF escritos en distintas versiones de ActionScript.
Funcionalidad admitida Flash Player 7 Flash Player 8 Flash Player 9 y 10
Puede cargar archivos SWF publicados para 7 y versiones anteriores 8 y versiones anteriores 9 (o 10) y versiones anteriores
Contiene esta AVM AVM1 AVM1 AVM1 y AVM2
Ejecuta archivos SWF escritos en 1.0 y 2.0 1.0 y 2.0 1.0, 2.0 y 3.0
ActionScript
En la siguiente tabla, “Funcionalidad admitida” hace referencia al contenido que se ejecuta en Flash Player 9 o
posterior. El contenido ejecutado en Flash Player 8 o versiones anteriores puede cargar, mostrar, ejecutar y reutilizar
scripts únicamente de ActionScript 1.0 y 2.0.
Funcionalidad admitida Contenido creado en ActionScript 1.0 y 2.0 Contenido creado en ActionScript 3.0
Puede cargar contenido y ejecutar código en Sólo ActionScript 1.0 y 2.0 ActionScript 1.0 y 2.0, y ActionScript 3.0
contenido creado en
Puede reutilizar contenido de scripts creado Sólo ActionScript 1.0 y 2.0 (ActionScript 3.0 a ActionScript 1.0 y 2.0 a través de
en través de conexión local) LocalConnection.
ActionScript 3.0
18. 9
Capítulo 3: Introducción a ActionScript
Este capítulo se ha diseñado como punto de partida para empezar a programar en ActionScript. Aquí se proporcionan
las bases necesarias para comprender los conceptos y ejemplos descritos en el resto de páginas de este manual. Para
comenzar, se ofrece una descripción de los conceptos básicos de programación en el contexto de su aplicación en
ActionScript. También se tratan los aspectos fundamentales de la organización y creación de una aplicación
ActionScript.
Fundamentos de programación
Dado que ActionScript es un lenguaje de programación, será de gran ayuda comprender primero algunos conceptos
generales de programación de ordenadores.
Para qué sirven los programas informáticos
En primer lugar, resulta útil entender qué es un programa informático y para qué sirve. Un programa informático se
caracteriza por dos aspectos principales:
• Un programa es una serie de instrucciones o pasos que debe llevar a cabo el equipo.
• Cada paso implica en última instancia la manipulación de información o datos.
En general, un programa informático es simplemente una lista de instrucciones paso a paso que se dan al equipo para
que las lleve a cabo una a una. Cada una de las instrucciones se denomina sentencia. Como se verá a lo largo de este
manual, en ActionScript cada sentencia finaliza con un punto y coma.
Lo que realiza básicamente una instrucción dada en un programa es manipular algún bit de datos almacenado en la
memoria del equipo. En un caso sencillo, se puede indicar al equipo que sume dos números y almacene el resultado en
su memoria. En un caso más complejo, se podría tener un rectángulo dibujado en la pantalla y escribir un programa
para moverlo a algún otro lugar de la pantalla. El equipo realiza un seguimiento de determinada información relativa
al rectángulo: las coordenadas x e y que indican su ubicación, la anchura y altura, el color, etc. Cada uno de estos bits
de información se almacena en algún lugar de la memoria del equipo. Un programa para mover el rectángulo a otra
ubicación incluiría pasos como "cambiar la coordenada x a 200; cambiar la coordenada y a 150" (especificando nuevos
valores para las coordenadas x e y). Por supuesto, el equipo procesa estos datos de algún modo para convertir estos
números en la imagen que aparece en la pantalla; pero para el nivel de detalle que aquí interesa, basta con saber que el
proceso de "mover un rectángulo en la pantalla" sólo implica en realidad un cambio de bits de datos en la memoria del
equipo.
Variables y constantes
Dado que la programación implica principalmente cambiar datos en la memoria del equipo, tiene que haber una forma
de representar un solo dato en el programa. Una variable es un nombre que representa un valor en la memoria del
equipo. Cuando se escriben sentencias para manipular valores, se escribe el nombre de la variable en lugar del valor;
cuando el equipo ve el nombre de la variable en el programa, busca en su memoria y utiliza el valor que allí encuentra.
Por ejemplo, si hay dos variables denominadas value1 y value2, cada una de las cuales contiene un número, para
sumar esos dos números se podría escribir la sentencia:
value1 + value2
Cuando lleve a cabo los pasos indicados, el equipo buscará los valores de cada variable y los sumará.
19. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH 10
Introducción a ActionScript
En ActionScript 3.0, una variable se compone realmente de tres partes distintas:
• El nombre de la variable
• El tipo de datos que puede almacenarse en la variable
• El valor real almacenado en la memoria del equipo
Se acaba de explicar cómo el equipo utiliza el nombre como marcador de posición del valor. El tipo de datos también
es importante. Cuando se crea una variable en ActionScript, se especifica el tipo concreto de datos que contendrá; a
partir de ahí, las instrucciones del programa sólo pueden almacenar ese tipo de datos en la variable y se puede
manipular el valor con las características particulares asociadas a su tipo de datos. En ActionScript, para crear una
variable (se conoce como declarar la variable), se utiliza la sentencia var:
var value1:Number;
En este caso, se ha indicado al equipo que cree una variable denominada value1, que contendrá únicamente datos
numéricos ("Number" es un tipo de datos específico definido en ActionScript). También es posible almacenar un valor
directamente en la variable:
var value2:Number = 17;
En Adobe Flash CS4 Professional hay otra forma posible de declarar una variable. Cuando se coloca un símbolo de clip
de película, un símbolo de botón o un campo de texto en el escenario, se le puede asignar un nombre de instancia en
el inspector de propiedades. En segundo plano, Flash crea una variable con el mismo nombre que la instancia, que se
puede utilizar en el código ActionScript para hacer referencia a ese elemento del escenario. Así, por ejemplo, si hay un
símbolo de clip de película en el escenario y se le asigna el nombre de instanciarocketShip, siempre que se use la
variable rocketShip en el código ActionScript, se estará manipulando dicho clip de película.
Una constante es muy similar a una variable en el sentido de que es un nombre que representa a un valor en la memoria
del equipo, con un tipo de datos específico. La diferencia es que a una constante sólo se le puede asignar un valor cada
vez en el curso de una aplicación ActionScript. Tras asignar un valor a una constante, éste permanecerá invariable en
toda la aplicación. La sintaxis para declarar constantes coincide con la de las variables, excepto por el hecho de que se
usa la palabra clave const en lugar de var:
const SALES_TAX_RATE:Number = 0.07;
Una constante resulta útil para definir un valor que se utilizará en varios puntos de un proyecto y que no cambiará en
circunstancias normales. Cuando se utiliza una constante en lugar de un valor literal el código resulta más legible. Por
ejemplo, es más fácil entender la finalidad de una línea de código que multiplica un precio por SALES_TAX_RATE que
la de una línea de código que lo haga por 0.07. Además, si en un momento dado es preciso cambiar el valor definido
por una constante, sólo habrá que hacerlo en un punto (la declaración de la constante) cuando se utiliza una constante
para su representación en el proyecto, en lugar de tener que modificarlo varias veces como cuando se utilizan valores
literales especificados en el código.
Tipos de datos
En ActionScript, hay muchos tipos de datos que pueden utilizarse como el tipo de datos de las variables que se crean.
Algunos de estos tipos de datos se pueden considerar "sencillos" o "fundamentales":
• String: un valor de texto como, por ejemplo, un nombre o el texto de un capítulo de un libro
• Numeric: ActionScript 3.0 incluye tres tipos de datos específicos para datos numéricos:
• Number: cualquier valor numérico, incluidos los valores fraccionarios o no fraccionarios
• int: un entero (un número no fraccionario)
• uint: un entero sin signo, es decir, que no puede ser negativo
20. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH 11
Introducción a ActionScript
• Boolean: un valor true (verdadero) o false (falso), por ejemplo, si un conmutador está activado o si dos valores son
iguales
El tipo de datos sencillo representa a un solo elemento de información: por ejemplo, un único número o una sola
secuencia de texto. No obstante, la mayoría de los tipos de datos definidos en ActionScript podrían describirse como
tipos de datos complejos porque representan un conjunto de valores agrupados. Por ejemplo, una variable con el tipo
de datos Date representa un solo valor: un momento temporal. No obstante, ese valor de fecha se representa en realidad
en forma de diferentes valores: el día, el mes, el año, las horas, los minutos, los segundos, etc., los cuales son números
individuales. Así pues, aunque se perciba una fecha como un solo valor (y se pueda tratar como tal creando una
variable Date), internamente el equipo lo considera un grupo de varios valores que conjuntamente definen una sola
fecha.
La mayoría de los tipos de datos incorporados y los tipos de datos definidos por los programadores son complejos.
Algunos de los tipos de datos complejos que podrían reconocerse son:
• MovieClip: un símbolo de clip de película
• TextField: un campo de texto dinámico o de texto de entrada
• SimpleButton: un símbolo de botón
• Date: información sobre un solo momento temporal (una fecha y hora)
Para referirse a los tipos de datos, a menudo se emplean como sinónimos las palabras clase y objeto. Una clase es
simplemente la definición de un tipo de datos — es una especie de plantilla para todos los objetos del tipo de datos,
como afirmar que "todas las variables del tipo de datos Example tiene estas características: A, B y C". Un objeto, por
otra parte, es una instancia real de una clase; una variable cuyo tipo de datos sea MovieClip se podría describir como
un objeto MovieClip. Se puede decir lo mismo con distintos enunciados:
• El tipo de datos de la variable myVariable es Number.
• La variable myVariable es una instancia de Number.
• La variable myVariable es un objeto Number.
• La variable myVariable es una instancia de la clase Number.
Trabajo con objetos
ActionScript es lo que se denomina un lenguaje de programación orientado a objetos. La programación orientada a
objetos es simplemente un enfoque de la programación, es decir, una forma de organizar el código en un programa
mediante objetos.
Anteriormente se ha definido un programa informático como una serie de pasos o instrucciones que lleva a cabo el
equipo. Así pues, conceptualmente se podría imaginar un programa informático simplemente como una larga lista de
instrucciones. Sin embargo, en la programación orientada a objetos, las instrucciones del programa se dividen entre
distintos objetos; el código se agrupa en segmentos de funcionalidad, de modo que los tipos de funcionalidad
relacionados o los elementos de información relacionados se agrupan en un contenedor.
De hecho, si se ha trabajado con símbolos en Flash, se estará acostumbrado a trabajar con objetos. Supongamos que se
ha definido un símbolo de clip de película (por ejemplo, el dibujo de un rectángulo) y se ha colocado una copia del
mismo en el escenario. Dicho símbolo de clip de película también es (literalmente) un objeto en ActionScript; es una
instancia de la clase MovieClip.