Si esta guía se distribuye con software que incluye un contrato de usuario final, la guía, así como el software descrito en ella, se proporciona con una licencia y
sólo puede usarse o copiarse en conformidad con los términos de dicha licencia. Con la excepción de lo permitido por la licencia, ninguna parte de esta guía
puede ser reproducida, almacenada en un sistema de recuperación de datos ni transmitida de ninguna forma ni por ningún medio, ya sea electrónico, mecánico,
de grabación o de otro tipo, sin el consentimiento previo por escrito de Adobe Systems Incorporated. Tenga en cuenta que el contenido de esta guía está
protegido por las leyes de derechos de autor aunque no se distribuya con software que incluya un contrato de licencia de usuario final.
El contenido de esta guía se proporciona exclusivamente con fines informativos, está sujeto a cambios sin previo aviso y no debe interpretarse como un
compromiso de Adobe Systems Incorporated. Adobe Systems Incorporated no asume ninguna responsabilidad por los errores o imprecisiones que puedan
existir en el contenido informativo de esta guía.
Recuerde que las ilustraciones o imágenes existentes que desee incluir en su proyecto pueden estar protegidas por las leyes de derechos de autor. La incorporación
no autorizada de este material en sus trabajos puede infringir los derechos del propietario de los derechos de autor. Asegúrese de obtener los permisos necesarios
del propietario de los derechos de autor.
Cualquier referencia a nombres de compañías en plantillas de ejemplo sólo se hace con propósitos de demostración y no está relacionada con ninguna
organización real.
Adobe, the Adobe logo, Adobe AIR, ActionScript, Flash, Flash Lite, Flex, Flex Builder, MXML, and Pixel Bender are either registered trademarks or trademarks
of Adobe Systems Incorporated in the United States and/or other countries.
ActiveX and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and other countries. Macintosh is a
trademark of Apple Inc., registered in the United States and other countries. Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United
States and other countries. All other trademarks are the property of their respective owners.
This product includes software developed by the Apache Software Foundation (
MPEG Layer-3 audio compression technology licensed by Fraunhofer IIS and Thomson Multimedia (
Speech compression and decompression technology licensed from Nellymoser, Inc. (
This product includes software developed by the OpenSymphony Group (
This product contains either BSAFE and/or TIPEM software by RSA Security, Inc.
® ActionScript® 3.0 para Adobe® Flash®
http://www.apache.org/).
http://www.mp3licensing.com)
www.nellymoser.com).
http://www.opensymphony.com/).
Sorenson Spark
Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110, USA
Notice to U.S. government end users. The software and documentation are “Commercial Items,” as that term is defined at 48 C.F.R. §2.101, consisting of
“Commercial Computer Software” and “Commercial Computer Software Documentation,” as such terms are used in 48 C.F.R. §12.212 or 48 C.F.R. §227.7202,
as applicable. Consistent with 48 C.F.R. §12.212 or 48 C.F.R. §§227.7202-1 through 227.7202-4, as applicable, the Commercial Computer Software and
Commercial Computer Software Documentation are being licensed to U.S. Government end users (a) only as Commercial items and (b) with only those rights
as are granted to all other end users pursuant to the terms and conditions herein. Unpublished-rights reserved under the copyright laws of the United States.
Adobe Systems Incorporated, 345 Park Avenue, San Jose, CA 95110-2704, USA. For U.S. Government End Users, Adobe agrees to comply with all applicable
equal opportunity laws including, if appropriate, the provisions of Executive Order 11246, as amended, Section 402 of the Vietnam Era Veterans Readjustment
Assistance Act of 1974 (38 USC 4212), and Section 503 of the Rehabilitation Act of 1973, as amended, and the regulations at 41 CFR Parts 60-1 through 60-60,
60-250 ,and 60-741. The affirmative action clause and regulations contained in the preceding sentence shall be incorporated by reference.
™ video compression and decompression technology licensed from Sorenson Media, Inc.
Aspectos básicos de las funciones 3D de Flash Player y el tiempo de ejecución de AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
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ítuloDescripción
1
En los capítulos 2 a 5 se ofrece información general
sobre la programación en ActionScript.
En los capítulos 6 a 11, se describen las clases y los tipos
de datos básicos de ActionScript 3.0.
En los capítulos 12 a 32, se describen las API de Flash
Player y de Adobe AIR.
Se abordan los conceptos básicos de ActionScript 3.0, incluida la sintaxis del
lenguaje, sentencias, operadores y programación ActionScript orientada a objetos.
Se describen los tipos de datos de nivel superior de ActionScript 3.0.
Se describen funciones importantes implementadas en paquetes y clases
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.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
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:
2
ManualDescripción
Utilización de FlashDescribe la manera de desarrollar aplicaciones Web dinámicas en la herramienta
Programación con ActionScript 3.0Describe el uso específico del lenguaje ActionScript 3.0 y la API principal de Flash
Referencia del lenguaje y componentes ActionScript 3.0Proporciona información sobre la sintaxis y el uso, así como ejemplos de código,
Utilización de componentes ActionScript 3.0Explica los detalles del uso de componentes para desarrollar aplicaciones creadas
Desarrollo de aplicaciones de Adobe AIR con Flash CS4
Professional
Aprendizaje de ActionScript 2.0 en Adobe FlashProporciona información general sobre la sintaxis de ActionScript 2.0 y sobre
Referencia del lenguaje ActionScript 2.0Proporciona información sobre la sintaxis y el uso, así como ejemplos de código,
Utilización de componentes ActionScript 2.0Explica de forma detallada cómo utilizar componentes de ActionScript 2.0 para
Referencia del lenguaje de componentes ActionScript 2.0Describe cada componente disponible en la versión 2 de la arquitectura de
Ampliación de FlashDescribe los objetos, métodos y propiedades disponibles en la API de JavaScript
de edición de Flash.
Player y de Adobe AIR
para los componentes de la herramienta de edición de Flash y la API de
ActionScript 3.0.
por Flash.
Describe cómo desarrollar e implementar aplicaciones de Adobe AIR utilizando
ActionScript 3.0 y la API de Adobe AIR en Flash
cómo utilizar ActionScript 2.0 al trabajar con distintos tipos de objetos
para los componentes de la herramienta de edición de Flash y la API de
ActionScript 2.0.
desarrollar aplicaciones creadas por Flash.
componentes de Adobe, junto con su API
Introducción a Flash Lite 2.x
Explica cómo utilizar Adobe
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
® Flash® Lite™ 2.x para desarrollar aplicaciones y
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
Información sobre este manual
ManualDescripción
Desarrollo de aplicaciones de Flash Lite 2.xExplica cómo desarrollar aplicaciones de Flash Lite 2.x
3
Introducción a ActionScript en Flash Lite 2.xOfrece una introducción al desarrollo de aplicaciones Flash Lite 2.x y describe
Referencia del lenguaje ActionScript de Flash Lite 2.xProporciona información sobre la sintaxis y el uso, así como ejemplos de código,
Introducción a Flash Lite 1.xProporciona una introducción a Flash Lite 1.x y describe el modo de comprobar
Desarrollo de aplicaciones de Flash Lite 1.xDescribe la manera de desarrollar aplicaciones para dispositivos móviles con Flash
Aprendizaje de ActionScript en Flash Lite 1.xExplica cómo utilizar ActionScript en aplicaciones de Flash Lite 1.x y describe
Referencia del lenguaje ActionScript de Flash Lite 1.xDescribe la sintaxis y el modo de uso de los elementos de ActionScript disponibles
todas las funciones de ActionScript disponibles para los desarrolladores de Flash
Lite 2.x
de la API de ActionScript 2.0 disponible en Flash Lite 2.x
contenido con el emulador de Adobe® Device Central CS4
Lite 1.x
todas las funciones de ActionScript disponibles en Flash Lite 1.x
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/.
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.
4
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.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
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.
5
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
están cerradas de forma predeterminada, pero pueden declararse como dinámicas con la palabra clave
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.
dynamic. Todas las clases de ActionScript 3.0
dynamic.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
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.
6
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.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
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.
7
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:
de delimitación de un carácter,
especificado, y
de nivel de línea son:
getLineText(), que devuelve el texto de la línea especificada. Una nueva clase Font proporciona un medio para
getFirstCharInParagraph(), que devuelve el índice del primer carácter en un párrafo. Los métodos
getLineLength(), que devuelve el número de caracteres en una línea de texto especificada, y
getCharBoundaries(), que devuelve un rectángulo que representa el recuadro
getCharIndexAtPoint(), que devuelve el índice del carácter en un punto
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.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
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.
8
Funcionalidad admitidaFlash Player 7Flash Player 8Flash Player 9 y 10
Puede cargar archivos SWF publicados para 7 y versiones anteriores8 y versiones anteriores9 (o 10) y versiones anteriores
Contiene esta AVMAVM1AVM1AVM1 y AVM2
Ejecuta archivos SWF escritos en
ActionScript
1.0 y 2.01.0 y 2.01.0, 2.0 y 3.0
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 admitidaContenido creado en ActionScript 1.0 y 2.0 Contenido creado en ActionScript 3.0
Puede cargar contenido y ejecutar código en
contenido creado en
Puede reutilizar contenido de scripts creado
en
Sólo ActionScript 1.0 y 2.0ActionScript 1.0 y 2.0, y ActionScript 3.0
Sólo ActionScript 1.0 y 2.0 (ActionScript 3.0 a
través de conexión local)
ActionScript 1.0 y 2.0 a través de
LocalConnection.
ActionScript 3.0
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:
9
• 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
sumar esos dos números se podría escribir la sentencia:
value1 y value2, cada una de las cuales contiene un número, para
value1 + value2
Cuando lleve a cabo los pasos indicados, el equipo buscará los valores de cada variable y los sumará.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
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 value1:Number;
var:
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 instancia
variable
rocketShip en el código ActionScript, se estará manipulando dicho clip de película.
rocketShip, siempre que se use la
10
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 SALES_TAX_RATE:Number = 0.07;
const en lugar de var:
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
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
SALES_TAX_RATE que
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
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
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:
11
• 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.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
Introducción a ActionScript
Es posible modificar algunas de las características del clip de película. Por ejemplo, cuando está seleccionado, es posible
cambiar algunos valores en el inspector de propiedades como, por ejemplo, la coordenada x o la anchura, o realizar
algunos ajustes de color como cambiar su valor de transparencia alfa o aplicarle un filtro de sombra. Otras
herramientas de Flash permiten realizar más cambios, como utilizar la herramienta Transformación libre para girar el
rectángulo. Todas estas acciones para modificar un símbolo de clip de película en el entorno de edición de Flash
también se pueden realizar en ActionScript cambiando los elementos de datos que se agrupan en un único paquete
denominado objeto MovieClip.
En la programación orientada a objetos de ActionScript, hay tres tipos de características que puede contener cualquier
clase:
• Propiedades
• Métodos
• Eventos
Estos elementos se utilizan conjuntamente para administrar los elementos de datos que utiliza el programa y para
decidir qué acciones deben llevarse a cabo y en qué orden.
Propiedades
Una propiedad representa uno de los elementos de datos que se empaquetan en un objeto. Un objeto Song (canción)
puede tener propiedades denominadas
rotation (rotación), x, width (anchura) y alpha (alfa). Se trabaja con las propiedades del mismo modo que con las
variables individuales; de hecho, se podría pensar que las propiedades son simplemente las variables "secundarias"
contenidas en un objeto.
artist (artista) y title (título); la clase MovieClip tiene propiedades como
12
A continuación se muestran algunos ejemplos de código ActionScript que utiliza propiedades. Esta línea de código
mueve el objeto MovieClip denominado
square.x = 100;
square a la coordenada x = 100 píxeles:
Este código utiliza la propiedad rotation para que el MovieClip square gire de forma correspondiente a la rotación del
MovieClip
square.rotation = triangle.rotation;
triangle:
Este código altera la escala horizontal del MovieClip square para hacerlo 1,5 veces más ancho:
square.scaleX = 1.5;
Fíjese en la estructura común: se utiliza una variable (square, triangle) como nombre del objeto, seguida de un
.) y, a continuación, el nombre de la propiedad (x, rotation, scaleX). El punto, denominado operador de
punto (
punto, se utiliza para indicar el acceso a uno de los elementos secundarios de un objeto. El conjunto de la estructura
(nombre de variable-punto-nombre de propiedad) se utiliza como una sola variable, como un nombre de un solo valor
en la memoria del equipo.
Métodos
Un método es una acción que puede llevar a cabo un objeto. Por ejemplo, si se ha creado un símbolo de clip de película
en Flash con varios fotogramas clave y animación en la línea de tiempo, ese clip de película podrá reproducirse,
detenerse o recibir instrucciones para mover la cabeza lectora a un determinado fotograma.
Este código indica al objeto MovieClip denominado
shortFilm que inicie su reproducción:
shortFilm.play();
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
Introducción a ActionScript
Esta línea hace que el MovieClip denominado shortFilm deje de reproducirse (la cabeza lectora se detiene como si se
hiciera una pausa en un vídeo):
shortFilm.stop();
Este código hace que un MovieClip denominado shortFilm mueva su cabeza lectora al fotograma 1 y deje de
reproducirse (como si se rebobinara un vídeo):
shortFilm.gotoAndStop(1);
Como puede verse, para acceder a los métodos, se debe escribir el nombre del objeto (una variable), un punto y el
nombre del método seguido de un paréntesis, siguiendo la misma estructura que para las propiedades. El paréntesis es
una forma de indicar que se está llamando al método, es decir, indicando al objeto que realice esa acción. Algunos
valores (o variables) se incluyen dentro del paréntesis para pasar información adicional necesaria para llevar a cabo la
acción. Estos valores se denominan parámetros del método. Por ejemplo, el método
gotoAndStop() necesita saber
cuál es el fotograma al que debe dirigirse, de modo que requiere un solo parámetro en el paréntesis. Otros métodos
play() y stop() no requieren información adicional porque son descriptivos por sí mismos. Sin embargo,
como
también se escriben con paréntesis.
A diferencia de las propiedades (y las variables), los métodos no se usan como identificadores de valores. No obstante,
algunos métodos pueden realizar cálculos y devolver un resultado que puede usarse como una variable. Por ejemplo,
el método
toString() de la clase Number convierte el valor numérico en su representación de texto:
13
var numericData:Number = 9;
var textData:String = numericData.toString();
Por ejemplo, se usaría el método toString() para mostrar el valor de una variable Number en un campo de texto de
la pantalla. La propiedad
text de la clase TextField (que representa el contenido de texto real que se muestra en la
pantalla) se define como String (cadena), de modo que sólo puede contener valores de texto. Esta línea de código
convierte en texto el valor numérico de la variable
el objeto TextField denominado
calculatorDisplay.text = numericData.toString();
calculatorDisplay:
numericData y, a continuación, hace que aparezca en la pantalla en
Eventos
Se ha descrito un programa informático como una serie de instrucciones que el ordenador lleva a cabo paso a paso.
Algunos programas informáticos sencillos no son más que eso: unos cuantos pasos que el ordenador ejecuta, tras los
cuales finaliza el programa. Sin embargo, los programas de ActionScript se han diseñado para continuar ejecutándose,
esperando los datos introducidos por el usuario u otras acciones. Los eventos son los mecanismos que determinan qué
instrucciones lleva a cabo el ordenador y cuándo las realiza.
Básicamente, los eventos son acciones que ActionScript conoce y a las que puede responder. Muchos eventos se
relacionan con la interacción del usuario (hacer clic en un botón, presionar una tecla del teclado, etc.) pero también
existen otros tipos de eventos. Por ejemplo, si se usa ActionScript para cargar una imagen externa, existe un evento
que puede indicar al usuario cuándo finaliza la carga de la imagen. En esencia, cuando se ejecuta un programa de
ActionScript, Adobe Flash Player y Adobe AIR simplemente esperan a que ocurran determinadas acciones y, cuando
suceden, ejecutan el código ActionScript que se haya especificado para tales eventos.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
Introducción a ActionScript
Gestión básica de eventos
La técnica para especificar determinadas acciones que deben realizarse como respuesta a eventos concretos se
denomina gestión de eventos. Cuando se escribe código ActionScript para llevar a cabo la gestión de eventos, se deben
identificar tres elementos importantes:
• El origen del evento: ¿en qué objeto va a repercutir el evento? Por ejemplo, ¿en qué botón se hará clic o qué objeto
Loader está cargando la imagen? El origen del evento también se denomina objetivo del evento, ya que es el objeto
al que Flash Player o AIR destinan el evento (es decir, donde éste tiene lugar realmente).
• El evento: ¿qué va a suceder, a qué se va a responder? Es importante identificar esto porque muchos objetos activan
varios eventos.
• La respuesta: ¿qué pasos hay que llevar a cabo cuando ocurra el evento?
Siempre que se escriba código ActionScript para gestionar eventos, el código debe incluir estos tres elementos y debe
seguir esta estructura básica (los elementos en negrita son marcadores de posición que hay que completar en cada caso
concreto):
function eventResponse(eventObject:EventType):void
{
// Actions performed in response to the event go here.
}
Este código realiza dos acciones. En primer lugar, define una función, que es la forma de especificar las acciones que
desean realizarse como respuesta al evento. A continuación, llama al método
addEventListener() del objeto de
origen, básicamente "suscribiendo" la función al evento especificado de modo que se lleven a cabo las acciones de la
función cuando ocurra el evento. Cada una de estas partes se tratará con mayor detalle.
Una función proporciona un modo de agrupar acciones con un único nombre que viene a ser un nombre de método
abreviado para llevar a cabo las acciones. Una función es idéntica a un método excepto en que no está necesariamente
asociada a una clase determinada (de hecho, es posible definir un método como una función asociada a una clase
determinada). Cuando se crea una función para la gestión de eventos, se debe elegir el nombre de la función
(denominada
eventResponse en este caso). Además, se debe especificar un parámetro (denominado eventObject
en este ejemplo). Especificar un parámetro de una función equivale a declarar una variable, de modo que también hay
que indicar el tipo de datos del parámetro. (En este ejemplo, el tipo de datos del parámetro es
EventType.)
Cada tipo de evento que se desee detectar tiene asociada una clase de ActionScript. El tipo de datos especificado para
el parámetro de función es siempre la clase asociada del evento concreto al que se desea responder. Por ejemplo, un
click (el cual se activa al hacer clic en un elemento con el ratón) se asocia a la clase MouseEvent. Cuando se
evento
vaya a escribir una función de detector para un evento
datos MouseEvent. Por último, entre las llaves de apertura y cierre (
click, ésta se debe definir con un parámetro con el tipo de
{ ... }), se escriben las instrucciones que debe llevar
a cabo el equipo cuando ocurra el evento.
Después de escribir la función de gestión de eventos, es necesario indicar al objeto de origen del evento (el objeto en
el que se produce el evento, por ejemplo, el botón) que se desea llamar a la función cuando ocurra el evento. Para ello
es necesario llamar al método
tienen un método
addEventListener()). El método addEventListener() utiliza dos parámetros:
addEventListener() de dicho objeto (todos los objetos que tienen eventos también
• En primer lugar, el nombre del evento específico al que se desea responder. De nuevo, cada evento se asocia a una
clase específica, que tiene a su vez un valor especial predefinido para cada evento (como un nombre exclusivo
propio del evento), que debe usarse como primer parámetro.
• En segundo lugar, el nombre de la función de respuesta al evento. Hay que tener en cuenta que el nombre de una
función debe escribirse sin paréntesis cuando se pasa como un parámetro.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
Introducción a ActionScript
15
Análisis del proceso de gestión de eventos
A continuación se ofrece una descripción paso a paso del proceso que tiene lugar cuando se crea un detector de
eventos. En este caso, es un ejemplo de creación de función de detector a la que se llama cuando se hace clic en un
objeto denominado
El código escrito por el programador es el siguiente:
function eventResponse(event:MouseEvent):void
{
// Actions performed in response to the event go here.
}
Al ejecutarse en Flash Player, el código funcionaría de la manera siguiente. (El comportamiento es idéntico en Adobe AIR):
1 Cuando se carga el archivo SWF, Flash Player detecta que existe una función denominada eventResponse().
myButton.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
Introducción a ActionScript
2 A continuación, Flash Player ejecuta el código (específicamente, las líneas de código que no están en una función).
En este caso se trata de una sola línea de código: para llamar al método
del evento (denominado
myButton) y pasar la función eventResponse como parámetro.
addEventListener() en el objeto de origen
a Internamente, myButton tiene una lista de funciones que detecta cada uno de sus eventos, por lo que cuando se
llama a su método
addEventListener(), myButton almacena la función eventResponse() en su lista de
detectores de eventos.
16
3 Cuando el usuario hace clic en el objeto myButton, se activa el evento click (identificado como
MouseEvent.CLICK en el código).
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
Introducción a ActionScript
En este punto ocurre lo siguiente:
a Flash Player crea un objeto, una instancia de la clase asociada con el evento en cuestión (MouseEvent en este
ejemplo). Para muchos eventos esto será una instancia de la clase Event, para eventos del ratón será una
instancia de MouseEvent y para otros eventos será una instancia de la clase asociada con el evento. Este objeto
creado se conoce como el objeto de evento y contiene información específica sobre el evento que se ha producido:
el tipo de evento, el momento en que ha ocurrido y otros datos relacionados con el evento, si procede.
17
b A continuación, Flash Player busca en la lista de detectores de eventos almacenada en myButton. Recorre estas
funciones de una en una, llamando a cada función y pasando el objeto de evento a la función como parámetro.
Como la función
Player llama a la función
eventResponse() es uno de los detectores de myButton, como parte de este proceso Flash
eventResponse().
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
Introducción a ActionScript
c Cuando se llama a la función eventResponse(), se ejecuta el código de la función para realizar las acciones
especificadas.
Ejemplos de gestión de eventos
A continuación se ofrecen más ejemplos concretos de eventos para proporcionar una idea de algunos de los elementos
comunes de los eventos y de las posibles variaciones disponibles cuando se escribe código de gestión de eventos:
• Hacer clic en un botón para iniciar la reproducción del clip de película actual. En el siguiente ejemplo, playButton
es el nombre de instancia del botón y
this.stop();
function playMovie(event:MouseEvent):void
{
this.play();
}
Por supuesto, antes de poder utilizar un objeto en ActionScript, éste debe existir. Una parte de la creación de un objeto
es la declaración de una variable; sin embargo, declarar una variable sólo crea un espacio vacío en la memoria del
equipo. Es necesario asignar un valor real a la variable, es decir, crear un objeto y almacenarlo en la variable, antes de
intentar usarla o manipularla. El proceso de creación de un objeto se denomina creación de una instancia del objeto,
en concreto, de una clase determinada.
Hay una forma sencilla de crear una instancia de objeto en la que no se utiliza ActionScript en absoluto. En Flash,
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, y se le asigna
un nombre de instancia en el inspector de propiedades, Flash declara automáticamente una variable con ese nombre
de instancia, crea una instancia de objeto y almacena el objeto en la variable. Del mismo modo, en Adobe Flex Builder,
cuando se crea un componente en MXML (codificando una etiqueta MXML o colocando el componente en el editor
en modo de diseño) y se le asigna un ID (en el formato MXML o en la vista Propiedades de Flex), ese ID se convierte
en el nombre de una variable de ActionScript y se crea una instancia del componente, que se almacena en la variable.
Sin embargo, no siempre se desea crear un objeto visualmente. Hay varias formas de crear instancias de objetos
utilizando exclusivamente ActionScript. En primer lugar, con varios tipos de datos de ActionScript, es posible crear
una instancia con una expresión literal, es decir, un valor escrito directamente en el código ActionScript. A
continuación se muestran algunos ejemplos:
• Valor numérico literal (introducir el número directamente):
var someNumber:Number = 17.239;
var someNegativeInteger:int = -53;
var someUint:uint = 22;
19
• Valor de cadena literal (poner el texto entre comillas dobles):
var firstName:String = "George";
var soliloquy:String = "To be or not to be, that is the question...";
• Valor booleano literal (usar los valores literales true o false):
var niceWeather:Boolean = true;
var playingOutside:Boolean = false;
• Valor de conjunto literal (cerrar entre corchetes una lista de valores separados por coma):
var seasons:Array = ["spring", "summer", "autumn", "winter"];
• Valor XML literal (introducir los datos XML directamente):
var employee:XML = <employee>
<firstName>Harold</firstName>
<lastName>Webster</lastName>
</employee>;
ActionScript también define expresiones literales para los tipos de datos Array, RegExp, Object y Function. Para
obtener información detallada sobre estas clases, consulte “Trabajo con conjuntos” en la página 159, “Utilización de
expresiones regulares” en la página 211 y “Tipo de datos Object” en la página 61.
En los demás tipos de datos, para crear una instancia de objeto, se utiliza el operador
new con el nombre de clase, como
en el siguiente ejemplo:
var raceCar:MovieClip = new MovieClip();
var birthday:Date = new Date(2006, 7, 9);
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
Introducción a ActionScript
A menudo se hace referencia a la creación de un objeto con el operador new como "llamar al constructor de la clase".
Un constructor es un método especial al que se llama como parte del proceso de creación de una instancia de una clase.
Debe tenerse en cuenta que, cuando se crea una instancia de este modo, se ponen paréntesis después del nombre de la
clase y en ocasiones se especifican los valores del parámetro, dos cosas que también se realizan cuando se llama a un
método.
Tenga en cuenta que, incluso en los tipos de datos que permiten crear instancias con una expresión literal, se puede
utilizar el operador
new para crear una instancia de objeto. Por ejemplo, las siguientes dos líneas de código realizan
exactamente lo mismo:
var someNumber:Number = 6.33;
var someNumber:Number = new Number(6.33);
Es importante familiarizarse con la creación de objetos mediante new ClassName(). Si se necesita crear una instancia
de cualquier tipo de datos de ActionScript que no tenga una representación visual (y que, por lo tanto, no pueda crearse
colocando un elemento en el escenario de Flash o el modo de diseño del editor MXML de Flex Builder), sólo puede
hacerse creando el objeto directamente en ActionScript con el operador
new.
20
En Flash concretamente, el operador
new también se puede usar para crear una instancia de un símbolo de clip de
película que esté definido en la biblioteca pero no esté colocado en el escenario. Para obtener más información al
respecto, consulte “Creación de objetos MovieClip con ActionScript” en la página 422.
Elementos comunes de los programas
Además de la declaración de variables, la creación de instancias de objetos y la manipulación de objetos mediante sus
propiedades y métodos, hay otros bloques de creación que se pueden usar para crear un programa de ActionScript.
Operadores
Los operadores son símbolos especiales (o, en ocasiones, palabras) que se utilizan para realizar cálculos. Se utilizan
principalmente en las operaciones matemáticas, pero también en la comparación entre valores. Por lo general, un
operador utiliza uno o varios valores, y calcula un solo resultado. Por ejemplo:
• El operador de suma (+) suma dos valores y obtiene como resultado una sola cifra:
var sum:Number = 23 + 32;
• El operador de multiplicación (*) multiplica un valor por otro y obtiene como resultado una sola cifra:
var energy:Number = mass * speedOfLight * speedOfLight;
• El operador de igualdad (==) compara dos valores para ver si son iguales y obtiene como resultado un solo valor
booleano (true o false):
if (dayOfWeek == "Wednesday")
{
takeOutTrash();
}
Como se muestra aquí, el operador de igualdad y los otros operadores de comparación se suelen utilizar con la
sentencia
if para determinar si determinadas instrucciones deben llevarse a cabo o no.
Para ver más detalles y ejemplos sobre el uso de los operadores, consulte “Operadores” en la página 71.
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH
Introducción a ActionScript
Comentarios
Mientras se escribe código ActionScript, a menudo se desea dejar notas para uno mismo, quizás para explicar el
funcionamiento de algunas líneas de código o el motivo de una determinada elección. Los comentarios del código son
una herramienta que permite escribir en el código texto que el ordenador debe ignorar. ActionScript incluye dos tipos
de comentarios:
• Comentario de una sola línea: un comentario de una sola línea se indica mediante dos barras diagonales en
cualquier lugar de una línea. El ordenador omitirá el texto entre las dos barras y el final de la línea:
// This is a comment; it's ignored by the computer.
var age:Number = 10; // Set the age to 10 by default.
• Comentario multilínea: un comentario multilínea contiene un marcador de inicio del comentario (/*), el
contenido del comentario y un marcador de fin del comentario (
y de fin será omitido por el ordenador, independientemente del número de líneas que ocupe el comentario:
/*
This might be a really long description, perhaps describing what
a particular function is used for or explaining a section of code.
In any case, these lines are all ignored by the computer.
*/
*/). Todo el texto entre los marcadores de inicio
21
Los comentarios también se utilizan con frecuencia para "desactivar" una o varias líneas de código. Por ejemplo, si se
está probando una forma distinta de llevar a cabo algo o se está intentando saber por qué determinado código
ActionScript no funciona del modo esperado.
Control de flujo
En un programa, muchas veces se desea repetir determinadas acciones, realizar sólo algunas acciones y no otras, o
realizar acciones alternativas en función de determinadas condiciones, etc. El control de flujo es el control sobre el cual
se llevan a cabo las funciones. Hay varios tipos de elementos de control de flujo disponibles en ActionScript.
• Funciones: las funciones son como los métodos abreviados; proporcionan un modo de agrupar una serie de
acciones bajo un solo nombre y pueden utilizarse para realizar cálculos. Las funciones son especialmente
importantes en la gestión de eventos, pero también se utilizan como una herramienta general para agrupar una serie
de instrucciones. Para obtener más información sobre funciones, consulte “Funciones” en la página 81.
• Bucles: las estructuras de bucle permiten designar una serie de instrucciones que el equipo realizará un número
definido de veces o hasta que cambie alguna condición. A menudo los bucles se utilizan para manipular varios
elementos relacionados, mediante una variable cuyo valor cambia cada vez que el ordenador recorre el bucle. Para
obtener más información sobre bucles, consulte “Reproducir indefinidamente” en la página 79.
• Sentencias condicionales: las sentencias condicionales proporcionan un modo de designar determinadas
instrucciones que sólo se llevan a cabo bajo circunstancias concretas o de ofrecer conjuntos alternativos de
instrucciones para condiciones distintas. El tipo más común de sentencia condicional es la sentencia
sentencia
if comprueba un valor o una expresión escrita entre paréntesis. Si el valor es true, se ejecutan las líneas
de código entre llaves; de lo contrario, se omiten. Por ejemplo:
if (age < 20)
{
// show special teenager-targeted content
}
if. La
La pareja de la sentencia if, la sentencia else, permite designar instrucciones alternativas que se llevarán a cabo si
la condición no es
true:
Loading...
+ 738 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.