SlideShare ist ein Scribd-Unternehmen logo
1 von 768
Downloaden Sie, um offline zu lesen
Programación con
ADOBE ACTIONSCRIPT 3.0
     ®            ®
© 2008 Adobe Systems Incorporated. All rights reserved.
Copyright




Programación con Adobe® ActionScript® 3.0 para Adobe® Flash®
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 (http://www.apache.org/).
MPEG Layer-3 audio compression technology licensed by Fraunhofer IIS and Thomson Multimedia (http://www.mp3licensing.com)
Speech compression and decompression technology licensed from Nellymoser, Inc. (www.nellymoser.com).
Video compression and decompression is powered by On2 TrueMotion video technology. © 1992-2005 On2 Technologies, Inc. All Rights Reserved.
http://www.on2.com.
This product includes software developed by the OpenSymphony Group (http://www.opensymphony.com/).
This product contains either BSAFE and/or TIPEM software by RSA Security, Inc.


                   Sorenson Spark™ video compression and decompression technology licensed from Sorenson Media, Inc.
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.
iii




Contenido
Capítulo 1: Información sobre este manual
Utilización de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Acceso a la documentación de ActionScript                                               ............................................................................ 2
Recursos de aprendizaje de ActionScript                                           ............................................................................... 3

Capítulo 2: Introducción a ActionScript 3.0
ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Ventajas de ActionScript 3.0                               ........................................................................................... 4
Novedades de ActionScript 3.0                                    ........................................................................................ 5
Compatibilidad con versiones anteriores                                           ............................................................................... 7

Capítulo 3: Introducción a ActionScript
Fundamentos de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Trabajo con objetos                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Elementos comunes de los programas                                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Ejemplo: Sitio de muestras de animación                                           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Creación de aplicaciones con ActionScript                                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Creación de clases personalizadas                                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Ejemplo: Creación de una aplicación básica                                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Ejecución de ejemplos posteriores                                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Capítulo 4: El lenguaje ActionScript y su sintaxis
Información general sobre el lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Objetos y clases                   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Paquetes y espacios de nombres                                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Variables            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Tipos de datos                   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Sintaxis           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Operadores                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Condicionales                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Reproducir indefinidamente                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Funciones              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Capítulo 5: Programación orientada a objetos con ActionScript
Fundamentos de la programación orientada a objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Clases          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Interfaces             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Herencia             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Temas avanzados                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Ejemplo: GeometricShapes                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

Capítulo 6: Trabajo con fechas y horas
Fundamentos de la utilización de fechas y horas                                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Administración de fechas de calendario y horas                                                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH iv
                                                                                                                                                                                                                 Contenido



Control de intervalos de tiempo                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Ejemplo: Sencillo reloj analógico                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

Capítulo 7: Trabajo con cadenas
Fundamentos de la utilización de cadenas                                . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Creación de cadenas            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
La propiedad length          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Trabajo con caracteres en cadenas                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Comparar cadenas           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Obtención de representaciones de cadena de otros objetos                                                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Concatenación de cadenas                   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Búsqueda de subcadenas y patrones en cadenas                                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Conversión de cadenas de mayúsculas a minúsculas y viceversa                                                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Ejemplo: ASCII art       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

Capítulo 8: Trabajo con conjuntos
Fundamentos de la utilización de conjuntos                                . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Conjuntos indexados            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Conjuntos asociativos            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Conjuntos multidimensionales                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Clonación de conjuntos               . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Temas avanzados          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Ejemplo: PlayList      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

Capítulo 9: Gestión de errores
Fundamentos de la gestión de errores                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Tipos de errores     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Gestión de errores en ActionScript 3.0                         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Trabajo con las versiones de depuración de Flash Player y AIR                                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Gestión de errores sincrónicos en una aplicación                                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Creación de clases de error personalizadas                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Respuesta al estado y a los eventos de error                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Comparación de las clases Error                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Ejemplo: Aplicación CustomErrors                         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Capítulo 10: Utilización de expresiones regulares
Fundamentos de la utilización de expresiones regulares                                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Sintaxis de las expresiones regulares                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Métodos para utilizar expresiones regulares con cadenas                                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Ejemplo: Analizador Wiki               . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Capítulo 11: Trabajo con XML
Fundamentos de la utilización de XML                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
El enfoque E4X del procesamiento de XML                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Objetos XML     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Objetos XMLList      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Inicialización de variables XML                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Construcción y transformación de objetos XML                                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH v
                                                                                                                                                                                                                         Contenido



Navegación de estructuras XML                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Utilización de espacios de nombres XML                                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Conversión de tipo XML                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Lectura de documentos XML externos                                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Ejemplo: Carga de datos de RSS desde Internet                                           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

Capítulo 12: Gestión de eventos
Fundamentos de la gestión de eventos                                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Diferencias entre la gestión de eventos en ActionScript 3.0 y en las versiones anteriores                                                                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
El flujo del evento               . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Objetos de evento                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Detectores de eventos                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Ejemplo: Reloj con alarma                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

Capítulo 13: Programación de la visualización
Fundamentos de la programación de la visualización                                                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Clases principales de visualización                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Ventajas de la utilización de la lista de visualización                                           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Trabajo con objetos de visualización                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Manipulación de objetos de visualización                                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Animación de objetos                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Carga dinámica de contenido de visualización                                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Ejemplo: SpriteArranger                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

Capítulo 14: Utilización de la API de dibujo
Fundamentos de la utilización de la API de dibujo                                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Aspectos básicos de la clase Graphics                                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Dibujo de líneas y curvas                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Dibujo de formas mediante los métodos incorporados                                                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Creación de líneas y rellenos degradados                                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Utilización de la clase Math con los métodos de dibujo                                                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Animación con la API de dibujo                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Ejemplo: Generador visual algorítmico                                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Utilización avanzada de la API de dibujo                                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Trazados de dibujo                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Definición de reglas de trazo                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Utilización de clases de datos gráficos                                . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Utilización de drawTriangles()                         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

Capítulo 15: Trabajo con la geometría
Fundamentos de geometría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Utilización de objetos Point                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Utilización de objetos Rectangle                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Utilización de objetos Matrix                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Ejemplo: Aplicación de una transformación de matriz a un objeto de visualización                                                                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH vi
                                                                                                                                                                                                                          Contenido



Capítulo 16: Aplicación de filtros a objetos de visualización
Fundamentos de la aplicación de filtros a los objetos de visualización                                                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Creación y aplicación de filtros                          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Filtros de visualización disponibles                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Ejemplo: Filter Workbench                         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

Capítulo 17: Trabajo con sombreados de Pixel Bender
Fundamentos de los sombreados de Pixel Bender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Carga e incorporación de un sombreado                                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Acceso a los metadatos de sombreado                                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Especificación de valores de entrada y parámetro de sombreado                                                               . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Utilización de un sombreado                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

Capítulo 18: Trabajo con clips de película
Fundamentos de la utilización de película . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Trabajo con objetos MovieClip                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Control de la reproducción de clips de película                                          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Creación de objetos MovieClip con ActionScript                                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
Carga de un archivo SWF externo                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
Ejemplo: RuntimeAssetsExplorer                                . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

Capítulo 19: Trabajo con interpolaciones de movimiento
Fundamentos de interpolaciones de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
Copiar scripts de interpolación de movimiento                                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Incorporación de scripts de interpolación de movimiento                                                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Descripción de la animación                           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Añadir filtros           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
Asociación de una interpolación de movimiento con sus objetos de visualización                                                                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

Capítulo 20: Trabajo con cinemática inversa
Fundamentos de cinemática inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
Información general sobre animación de esqueletos IK                                                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Obtener información sobre un esqueleto IK                                          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Creación de una instancia de la clase IKMover y limitación del movimiento                                                                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Desplazamiento de un esqueleto IK                                   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
Utilización de eventos IK                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

Capítulo 21: Trabajo con texto
Fundamentos de la utilización de texto                                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
Utilización de la clase TextField                           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Utilización de Flash Text Engine                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

Capítulo 22: Trabajo con mapas de bits
Fundamentos de la utilización de mapas de bits                                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Las clases Bitmap y BitmapData                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Manipulación de píxeles                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Copiar datos de mapas de bits                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Creación de texturas con funciones de ruido                                          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH vii
                                                                                                                                                                                                                       Contenido



Desplazarse por mapas de bits                          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Aprovechamiento de la técnica de mipmapping                                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
Ejemplo: Luna giratoria animada                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506

Capítulo 23: Trabajo en tres dimensiones (3D)
Fundamentos del concepto 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Aspectos básicos de las funciones 3D de Flash Player y el tiempo de ejecución de AIR                                                                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
Creación y movimiento de objetos 3D                                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
Proyección de objetos 3D en una vista bidimensional                                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Ejemplo: Proyección en perspectiva                               . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
Transformaciones 3D complejas                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
Utilización de triángulos para efectos 3D                                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530

Capítulo 24: Trabajo con vídeo
Fundamentos de la utilización de vídeo                                   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Aspectos básicos de los formatos de vídeo                                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
Aspectos básicos de la clase Video                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Carga de archivos de vídeo                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Control de la reproducción de vídeo                                . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Reproducción de vídeo en modo de pantalla completa                                                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Transmisión de archivos de vídeo                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Aspectos básicos de los puntos de referencia                                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Escritura de métodos callback para metadatos y puntos de referencia                                                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Utilización de puntos de referencia y metadatos                                         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Captura de entradas de cámara                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Envío de vídeo a un servidor                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Temas avanzados para archivos FLV                                . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Ejemplo: Gramola de vídeo                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573

Capítulo 25: Trabajo con sonido
Fundamentos de la utilización de sonido                                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Aspectos básicos de la arquitectura de sonido                                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
Carga de archivos de sonido externos                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Trabajo con sonidos incorporados                               . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
Trabajo con archivos de flujo de sonido                                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Trabajo con sonido generado dinámicamente                                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
Reproducción de sonidos                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Consideraciones de seguridad al cargar y reproducir sonidos                                                       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
Control de desplazamiento y volumen de sonido                                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
Trabajo con metadatos de sonido                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Acceso a datos de sonido sin formato                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Captura de entradas de sonido                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Ejemplo: Podcast Player                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602

Capítulo 26: Captura de entradas del usuario
Fundamentos de la captura de entradas del usuario                                               . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Captura de entradas de teclado                           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH viii
                                                                                                                                                                                                           Contenido



Captura de entradas de ratón             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
Ejemplo: WordSearch        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617

Capítulo 27: Redes y comunicación
Fundamentos de redes y comunicación                          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Trabajo con datos externos           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
Conexión con otras instancias de Flash Player y AIR                               . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Conexiones de socket       . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Almacenamiento de datos locales                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
Trabajo con archivos de datos              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Ejemplo: Generación de un cliente Telnet                         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
Ejemplo: Carga y descarga de archivos                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657

Capítulo 28: Entorno del sistema del cliente
Fundamentos del entorno del sistema del cliente                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Utilización de la clase System           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
Utilización de la clase Capabilities             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
Utilización de la clase ApplicationDomain                        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
Utilización de la clase IME      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
Ejemplo: Detección de las características del sistema                                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674

Capítulo 29: Copiar y pegar
Conceptos básicos de copiar y pegar                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Lectura y escritura en el portapapeles del sistema                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Formatos de datos del portapapeles                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679

Capítulo 30: Impresión
Fundamentos de impresión             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Impresión de una página          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
Interfaz de impresión del sistema y tareas de Flash Player y AIR                                          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
Configuración del tamaño, la escala y la orientación                                . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Ejemplo: Impresión de varias páginas                     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690
Ejemplo: Ajuste de escala, recorte y respuesta                          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692

Capítulo 31: Utilización de la API externa
Fundamentos de la utilización de la API externa                             . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
Requisitos y ventajas de la API externa                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
Utilización de la clase ExternalInterface                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
Ejemplo: Utilización de la API externa con una página Web contenedora                                                      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
Ejemplo: Utilización de la API externa con un contenedor ActiveX                                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708

Capítulo 32: Seguridad de Flash Player
Información general sobre la seguridad de Flash Player                                    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
Entornos limitados de seguridad                . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716
Controles de permiso     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Restricción de las API de red          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
Seguridad del modo de pantalla completa                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
Carga de contenido      . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH ix
                                                                                                                                                                                                                       Contenido



Reutilización de scripts                 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
Acceso a medios cargados como datos                                   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
Carga de datos           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Carga de contenido incorporado de archivos SWF importados en un dominio de seguridad                                                                                        . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
Trabajo con contenido heredado                              . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
Configuración de permisos de LocalConnection                                            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
Control del acceso URL saliente                          . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
Objetos compartidos                  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Acceso a la cámara, el micrófono, el portapapeles, el ratón y el teclado                                                           . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744

Índice    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
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.
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
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/.
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.
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.
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.
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.
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
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á.
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
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.
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0

Weitere ähnliche Inhalte

Was ist angesagt?

Code igniter guia_usuario_2_0
Code igniter guia_usuario_2_0Code igniter guia_usuario_2_0
Code igniter guia_usuario_2_0edfabs
 
Manual de uti-2010.final
Manual de uti-2010.finalManual de uti-2010.final
Manual de uti-2010.finalJavier Camacho
 
Code igniter spanish_userguide
Code igniter spanish_userguideCode igniter spanish_userguide
Code igniter spanish_userguidecombamx
 
Manual adobe flash cs3
Manual adobe flash cs3Manual adobe flash cs3
Manual adobe flash cs3Yanka-Isabelle
 
Sistema de Administracion de Condominios basados en agentes de software
Sistema de Administracion de Condominios basados en agentes de softwareSistema de Administracion de Condominios basados en agentes de software
Sistema de Administracion de Condominios basados en agentes de softwarePedro Chavez
 
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuelaManual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuelaAngel De las Heras
 
Manual dreamweaver cs5
Manual dreamweaver cs5Manual dreamweaver cs5
Manual dreamweaver cs5Equipo 3
 

Was ist angesagt? (14)

Code igniter guia_usuario_2_0
Code igniter guia_usuario_2_0Code igniter guia_usuario_2_0
Code igniter guia_usuario_2_0
 
Manual de uti-2010.final
Manual de uti-2010.finalManual de uti-2010.final
Manual de uti-2010.final
 
Code igniter spanish_userguide
Code igniter spanish_userguideCode igniter spanish_userguide
Code igniter spanish_userguide
 
Flash cs5 help
Flash cs5 helpFlash cs5 help
Flash cs5 help
 
Fireworks Cs4 Help
Fireworks Cs4 HelpFireworks Cs4 Help
Fireworks Cs4 Help
 
Modulo herramientas
Modulo herramientasModulo herramientas
Modulo herramientas
 
Manual adobe flash cs3
Manual adobe flash cs3Manual adobe flash cs3
Manual adobe flash cs3
 
Flash as3 components_help
Flash as3 components_helpFlash as3 components_help
Flash as3 components_help
 
Sistema de Administracion de Condominios basados en agentes de software
Sistema de Administracion de Condominios basados en agentes de softwareSistema de Administracion de Condominios basados en agentes de software
Sistema de Administracion de Condominios basados en agentes de software
 
Manual de inf para negocios
Manual de inf para negociosManual de inf para negocios
Manual de inf para negocios
 
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuelaManual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
 
Tfguex 2014 alvarez_rodrigo
Tfguex 2014 alvarez_rodrigoTfguex 2014 alvarez_rodrigo
Tfguex 2014 alvarez_rodrigo
 
Manual dreamweaver cs5
Manual dreamweaver cs5Manual dreamweaver cs5
Manual dreamweaver cs5
 
Dreamweaver cs5
Dreamweaver cs5Dreamweaver cs5
Dreamweaver cs5
 

Ähnlich wie Programacion.con.adobe.action.script.3.0

Adobe Actionscript 3.0
Adobe Actionscript 3.0Adobe Actionscript 3.0
Adobe Actionscript 3.0Berthamazon
 
Programando con ActionScript 3.0
Programando con ActionScript 3.0Programando con ActionScript 3.0
Programando con ActionScript 3.0Gerardo Martínez
 
Dreamweaver cs4
Dreamweaver cs4Dreamweaver cs4
Dreamweaver cs4jass3804
 
Flash as2 learning
Flash as2 learningFlash as2 learning
Flash as2 learningLaly Golpes
 
Referencia de action_script
Referencia de action_scriptReferencia de action_script
Referencia de action_scriptMarco Vilchez
 
Manual activ inspire r180219
Manual activ inspire r180219Manual activ inspire r180219
Manual activ inspire r180219adolfogcasanova
 
Manual activinspire 1
Manual activinspire 1Manual activinspire 1
Manual activinspire 1jordillorens
 
Adobe after effects cs5
Adobe after effects cs5Adobe after effects cs5
Adobe after effects cs5raulernesto28
 
Adobe after effects cs5
Adobe after effects cs5Adobe after effects cs5
Adobe after effects cs5Jesus Reinoso
 
Manual photoshop cs5_ayuda
Manual photoshop cs5_ayudaManual photoshop cs5_ayuda
Manual photoshop cs5_ayudarob124
 
Manual dreamweaver cs5_spanish
Manual dreamweaver cs5_spanishManual dreamweaver cs5_spanish
Manual dreamweaver cs5_spanishDiego Salazar
 
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE Cclaudiocj7
 
TUTORIAL ADOBE PREMIERE
TUTORIAL ADOBE PREMIERE TUTORIAL ADOBE PREMIERE
TUTORIAL ADOBE PREMIERE YUQUITA3
 
Fedora 14-software management-guide-es-es
Fedora 14-software management-guide-es-esFedora 14-software management-guide-es-es
Fedora 14-software management-guide-es-esdionisio
 
Conceptos informáticos generales
Conceptos informáticos generalesConceptos informáticos generales
Conceptos informáticos generalesLeonel Sartori
 
Algoritmosy estructurasdedatos2015 1
Algoritmosy estructurasdedatos2015 1Algoritmosy estructurasdedatos2015 1
Algoritmosy estructurasdedatos2015 1Natalia G Peñuela
 
Elastix a ritmo de merengue v-1-3
Elastix a ritmo de merengue v-1-3Elastix a ritmo de merengue v-1-3
Elastix a ritmo de merengue v-1-3unad
 

Ähnlich wie Programacion.con.adobe.action.script.3.0 (20)

Adobe Actionscript 3.0
Adobe Actionscript 3.0Adobe Actionscript 3.0
Adobe Actionscript 3.0
 
Programando con ActionScript 3.0
Programando con ActionScript 3.0Programando con ActionScript 3.0
Programando con ActionScript 3.0
 
Dreamweaver cs4
Dreamweaver cs4Dreamweaver cs4
Dreamweaver cs4
 
Flash as2 learning
Flash as2 learningFlash as2 learning
Flash as2 learning
 
Fireworks cs5
Fireworks cs5Fireworks cs5
Fireworks cs5
 
Referencia de action_script
Referencia de action_scriptReferencia de action_script
Referencia de action_script
 
Manual activ inspire r180219
Manual activ inspire r180219Manual activ inspire r180219
Manual activ inspire r180219
 
Manual activinspire 1
Manual activinspire 1Manual activinspire 1
Manual activinspire 1
 
Adobe after effects cs5
Adobe after effects cs5Adobe after effects cs5
Adobe after effects cs5
 
Adobe after effects cs5
Adobe after effects cs5Adobe after effects cs5
Adobe after effects cs5
 
Manual photoshop cs5_ayuda
Manual photoshop cs5_ayudaManual photoshop cs5_ayuda
Manual photoshop cs5_ayuda
 
Manual photoshop cs5_ayuda
Manual photoshop cs5_ayudaManual photoshop cs5_ayuda
Manual photoshop cs5_ayuda
 
Manual dreamweaver cs5_spanish
Manual dreamweaver cs5_spanishManual dreamweaver cs5_spanish
Manual dreamweaver cs5_spanish
 
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE CMANUAL DE LENGUAJE C
MANUAL DE LENGUAJE C
 
TUTORIAL ADOBE PREMIERE
TUTORIAL ADOBE PREMIERE TUTORIAL ADOBE PREMIERE
TUTORIAL ADOBE PREMIERE
 
Code igniter spanish_userguide
Code igniter spanish_userguideCode igniter spanish_userguide
Code igniter spanish_userguide
 
Fedora 14-software management-guide-es-es
Fedora 14-software management-guide-es-esFedora 14-software management-guide-es-es
Fedora 14-software management-guide-es-es
 
Conceptos informáticos generales
Conceptos informáticos generalesConceptos informáticos generales
Conceptos informáticos generales
 
Algoritmosy estructurasdedatos2015 1
Algoritmosy estructurasdedatos2015 1Algoritmosy estructurasdedatos2015 1
Algoritmosy estructurasdedatos2015 1
 
Elastix a ritmo de merengue v-1-3
Elastix a ritmo de merengue v-1-3Elastix a ritmo de merengue v-1-3
Elastix a ritmo de merengue v-1-3
 

Kürzlich hochgeladen

Enciclopedia_de_las_Cruces_de_Encarnacio.pdf
Enciclopedia_de_las_Cruces_de_Encarnacio.pdfEnciclopedia_de_las_Cruces_de_Encarnacio.pdf
Enciclopedia_de_las_Cruces_de_Encarnacio.pdfCatherineMaechtig
 
Ejercicios de Lengua que deberías prácticar para el uso de comas
Ejercicios de Lengua que deberías prácticar para el uso de comasEjercicios de Lengua que deberías prácticar para el uso de comas
Ejercicios de Lengua que deberías prácticar para el uso de comasmichica1
 
el desafío del amor .pdf el desafío del amor
el desafío del amor .pdf el desafío del amorel desafío del amor .pdf el desafío del amor
el desafío del amor .pdf el desafío del amorrtvmfd5s46
 
Revista Actualidad Espiritista N°33.pdf
Revista  Actualidad Espiritista N°33.pdfRevista  Actualidad Espiritista N°33.pdf
Revista Actualidad Espiritista N°33.pdfPatricia487970
 
CATEQUESIS SOBRE LA FE CATÓLICA PARA ADULTOS
CATEQUESIS SOBRE LA FE CATÓLICA PARA ADULTOSCATEQUESIS SOBRE LA FE CATÓLICA PARA ADULTOS
CATEQUESIS SOBRE LA FE CATÓLICA PARA ADULTOSFredyMolina26
 
CURSO BÁSICO ÁNGELES Y ÁRCANGELES.pdf
CURSO  BÁSICO  ÁNGELES Y  ÁRCANGELES.pdfCURSO  BÁSICO  ÁNGELES Y  ÁRCANGELES.pdf
CURSO BÁSICO ÁNGELES Y ÁRCANGELES.pdfestudiosespiritasdep
 
ABRAHAM HAROLD MASLOW 1908-1970 HISTORIA.pptx
ABRAHAM HAROLD MASLOW 1908-1970 HISTORIA.pptxABRAHAM HAROLD MASLOW 1908-1970 HISTORIA.pptx
ABRAHAM HAROLD MASLOW 1908-1970 HISTORIA.pptxXavierCrdenasGarca
 
Uso correcto del silbato y formaciones.pdf
Uso correcto del silbato y formaciones.pdfUso correcto del silbato y formaciones.pdf
Uso correcto del silbato y formaciones.pdfzrzpwy2c5g
 
Virginia-Satir (1).pptx Autoestima y desarrollo personal
Virginia-Satir (1).pptx Autoestima y desarrollo personalVirginia-Satir (1).pptx Autoestima y desarrollo personal
Virginia-Satir (1).pptx Autoestima y desarrollo personalCHUPACABRA6
 
Conoce el porque BTS no es un grupo sobrevalorado
Conoce el porque BTS no es un grupo sobrevaloradoConoce el porque BTS no es un grupo sobrevalorado
Conoce el porque BTS no es un grupo sobrevaloradovazquezacostavanessa
 
ESCATOLOGÍA: LA FUERZA Y ESPERANZA DEL VERDADERO PUEBLO DE YHWH.pdf
ESCATOLOGÍA: LA FUERZA Y ESPERANZA DEL VERDADERO PUEBLO DE YHWH.pdfESCATOLOGÍA: LA FUERZA Y ESPERANZA DEL VERDADERO PUEBLO DE YHWH.pdf
ESCATOLOGÍA: LA FUERZA Y ESPERANZA DEL VERDADERO PUEBLO DE YHWH.pdfyhostend
 
El enamoramiento es una fuente de inspiración.pdf
El enamoramiento es una fuente de inspiración.pdfEl enamoramiento es una fuente de inspiración.pdf
El enamoramiento es una fuente de inspiración.pdfEdward Chero Valdivieso
 
DINAMICA VEAMOS TEMA 2 Padres y Padrinos, facilitadores del proceso de crecim...
DINAMICA VEAMOS TEMA 2 Padres y Padrinos, facilitadores del proceso de crecim...DINAMICA VEAMOS TEMA 2 Padres y Padrinos, facilitadores del proceso de crecim...
DINAMICA VEAMOS TEMA 2 Padres y Padrinos, facilitadores del proceso de crecim...FernandoJavierGarcia11
 
organizador visula diversidad linguistica y etnica.docx
organizador visula diversidad linguistica y etnica.docxorganizador visula diversidad linguistica y etnica.docx
organizador visula diversidad linguistica y etnica.docxShirleyJaneFrancoSar
 
tarjeta personal de trabajo en la universidad
tarjeta personal de trabajo en la universidadtarjeta personal de trabajo en la universidad
tarjeta personal de trabajo en la universidadpe0939
 
El papel de la mujer Hoy! - Empoderamiento
El papel de la mujer Hoy! - EmpoderamientoEl papel de la mujer Hoy! - Empoderamiento
El papel de la mujer Hoy! - EmpoderamientoLuzcellySanchezAngel
 
El Arte de Soplar Brasas - coaching ontológico
El Arte de Soplar Brasas - coaching ontológicoEl Arte de Soplar Brasas - coaching ontológico
El Arte de Soplar Brasas - coaching ontológicoCarlosMuoz374939
 
Genograma familiar esquema de la familia
Genograma familiar esquema de la familiaGenograma familiar esquema de la familia
Genograma familiar esquema de la familializv61841
 

Kürzlich hochgeladen (19)

Enciclopedia_de_las_Cruces_de_Encarnacio.pdf
Enciclopedia_de_las_Cruces_de_Encarnacio.pdfEnciclopedia_de_las_Cruces_de_Encarnacio.pdf
Enciclopedia_de_las_Cruces_de_Encarnacio.pdf
 
Ejercicios de Lengua que deberías prácticar para el uso de comas
Ejercicios de Lengua que deberías prácticar para el uso de comasEjercicios de Lengua que deberías prácticar para el uso de comas
Ejercicios de Lengua que deberías prácticar para el uso de comas
 
el desafío del amor .pdf el desafío del amor
el desafío del amor .pdf el desafío del amorel desafío del amor .pdf el desafío del amor
el desafío del amor .pdf el desafío del amor
 
Revista Actualidad Espiritista N°33.pdf
Revista  Actualidad Espiritista N°33.pdfRevista  Actualidad Espiritista N°33.pdf
Revista Actualidad Espiritista N°33.pdf
 
CATEQUESIS SOBRE LA FE CATÓLICA PARA ADULTOS
CATEQUESIS SOBRE LA FE CATÓLICA PARA ADULTOSCATEQUESIS SOBRE LA FE CATÓLICA PARA ADULTOS
CATEQUESIS SOBRE LA FE CATÓLICA PARA ADULTOS
 
CURSO BÁSICO ÁNGELES Y ÁRCANGELES.pdf
CURSO  BÁSICO  ÁNGELES Y  ÁRCANGELES.pdfCURSO  BÁSICO  ÁNGELES Y  ÁRCANGELES.pdf
CURSO BÁSICO ÁNGELES Y ÁRCANGELES.pdf
 
ABRAHAM HAROLD MASLOW 1908-1970 HISTORIA.pptx
ABRAHAM HAROLD MASLOW 1908-1970 HISTORIA.pptxABRAHAM HAROLD MASLOW 1908-1970 HISTORIA.pptx
ABRAHAM HAROLD MASLOW 1908-1970 HISTORIA.pptx
 
LEY DE LA GRATITUD21..................pdf
LEY  DE LA GRATITUD21..................pdfLEY  DE LA GRATITUD21..................pdf
LEY DE LA GRATITUD21..................pdf
 
Uso correcto del silbato y formaciones.pdf
Uso correcto del silbato y formaciones.pdfUso correcto del silbato y formaciones.pdf
Uso correcto del silbato y formaciones.pdf
 
Virginia-Satir (1).pptx Autoestima y desarrollo personal
Virginia-Satir (1).pptx Autoestima y desarrollo personalVirginia-Satir (1).pptx Autoestima y desarrollo personal
Virginia-Satir (1).pptx Autoestima y desarrollo personal
 
Conoce el porque BTS no es un grupo sobrevalorado
Conoce el porque BTS no es un grupo sobrevaloradoConoce el porque BTS no es un grupo sobrevalorado
Conoce el porque BTS no es un grupo sobrevalorado
 
ESCATOLOGÍA: LA FUERZA Y ESPERANZA DEL VERDADERO PUEBLO DE YHWH.pdf
ESCATOLOGÍA: LA FUERZA Y ESPERANZA DEL VERDADERO PUEBLO DE YHWH.pdfESCATOLOGÍA: LA FUERZA Y ESPERANZA DEL VERDADERO PUEBLO DE YHWH.pdf
ESCATOLOGÍA: LA FUERZA Y ESPERANZA DEL VERDADERO PUEBLO DE YHWH.pdf
 
El enamoramiento es una fuente de inspiración.pdf
El enamoramiento es una fuente de inspiración.pdfEl enamoramiento es una fuente de inspiración.pdf
El enamoramiento es una fuente de inspiración.pdf
 
DINAMICA VEAMOS TEMA 2 Padres y Padrinos, facilitadores del proceso de crecim...
DINAMICA VEAMOS TEMA 2 Padres y Padrinos, facilitadores del proceso de crecim...DINAMICA VEAMOS TEMA 2 Padres y Padrinos, facilitadores del proceso de crecim...
DINAMICA VEAMOS TEMA 2 Padres y Padrinos, facilitadores del proceso de crecim...
 
organizador visula diversidad linguistica y etnica.docx
organizador visula diversidad linguistica y etnica.docxorganizador visula diversidad linguistica y etnica.docx
organizador visula diversidad linguistica y etnica.docx
 
tarjeta personal de trabajo en la universidad
tarjeta personal de trabajo en la universidadtarjeta personal de trabajo en la universidad
tarjeta personal de trabajo en la universidad
 
El papel de la mujer Hoy! - Empoderamiento
El papel de la mujer Hoy! - EmpoderamientoEl papel de la mujer Hoy! - Empoderamiento
El papel de la mujer Hoy! - Empoderamiento
 
El Arte de Soplar Brasas - coaching ontológico
El Arte de Soplar Brasas - coaching ontológicoEl Arte de Soplar Brasas - coaching ontológico
El Arte de Soplar Brasas - coaching ontológico
 
Genograma familiar esquema de la familia
Genograma familiar esquema de la familiaGenograma familiar esquema de la familia
Genograma familiar esquema de la familia
 

Programacion.con.adobe.action.script.3.0

  • 2. © 2008 Adobe Systems Incorporated. All rights reserved. Copyright Programación con Adobe® ActionScript® 3.0 para Adobe® Flash® 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 (http://www.apache.org/). MPEG Layer-3 audio compression technology licensed by Fraunhofer IIS and Thomson Multimedia (http://www.mp3licensing.com) Speech compression and decompression technology licensed from Nellymoser, Inc. (www.nellymoser.com). Video compression and decompression is powered by On2 TrueMotion video technology. © 1992-2005 On2 Technologies, Inc. All Rights Reserved. http://www.on2.com. This product includes software developed by the OpenSymphony Group (http://www.opensymphony.com/). This product contains either BSAFE and/or TIPEM software by RSA Security, Inc. Sorenson Spark™ video compression and decompression technology licensed from Sorenson Media, Inc. 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.
  • 3. iii Contenido Capítulo 1: Información sobre este manual Utilización de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Acceso a la documentación de ActionScript ............................................................................ 2 Recursos de aprendizaje de ActionScript ............................................................................... 3 Capítulo 2: Introducción a ActionScript 3.0 ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Ventajas de ActionScript 3.0 ........................................................................................... 4 Novedades de ActionScript 3.0 ........................................................................................ 5 Compatibilidad con versiones anteriores ............................................................................... 7 Capítulo 3: Introducción a ActionScript Fundamentos de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Trabajo con objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Elementos comunes de los programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Ejemplo: Sitio de muestras de animación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Creación de aplicaciones con ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Creación de clases personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Ejemplo: Creación de una aplicación básica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Ejecución de ejemplos posteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Capítulo 4: El lenguaje ActionScript y su sintaxis Información general sobre el lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Objetos y clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Paquetes y espacios de nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Reproducir indefinidamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Capítulo 5: Programación orientada a objetos con ActionScript Fundamentos de la programación orientada a objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Temas avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Ejemplo: GeometricShapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Capítulo 6: Trabajo con fechas y horas Fundamentos de la utilización de fechas y horas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Administración de fechas de calendario y horas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
  • 4. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH iv Contenido Control de intervalos de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Ejemplo: Sencillo reloj analógico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Capítulo 7: Trabajo con cadenas Fundamentos de la utilización de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Creación de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 La propiedad length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Trabajo con caracteres en cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Comparar cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Obtención de representaciones de cadena de otros objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Concatenación de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Búsqueda de subcadenas y patrones en cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Conversión de cadenas de mayúsculas a minúsculas y viceversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Ejemplo: ASCII art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Capítulo 8: Trabajo con conjuntos Fundamentos de la utilización de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Conjuntos indexados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Conjuntos asociativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Conjuntos multidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Clonación de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Temas avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Ejemplo: PlayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Capítulo 9: Gestión de errores Fundamentos de la gestión de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Tipos de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Gestión de errores en ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Trabajo con las versiones de depuración de Flash Player y AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Gestión de errores sincrónicos en una aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Creación de clases de error personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Respuesta al estado y a los eventos de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Comparación de las clases Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Ejemplo: Aplicación CustomErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Capítulo 10: Utilización de expresiones regulares Fundamentos de la utilización de expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Sintaxis de las expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Métodos para utilizar expresiones regulares con cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Ejemplo: Analizador Wiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 Capítulo 11: Trabajo con XML Fundamentos de la utilización de XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 El enfoque E4X del procesamiento de XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Objetos XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Objetos XMLList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Inicialización de variables XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Construcción y transformación de objetos XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
  • 5. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH v Contenido Navegación de estructuras XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Utilización de espacios de nombres XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 Conversión de tipo XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Lectura de documentos XML externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Ejemplo: Carga de datos de RSS desde Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Capítulo 12: Gestión de eventos Fundamentos de la gestión de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Diferencias entre la gestión de eventos en ActionScript 3.0 y en las versiones anteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 El flujo del evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Objetos de evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 Detectores de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Ejemplo: Reloj con alarma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Capítulo 13: Programación de la visualización Fundamentos de la programación de la visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 Clases principales de visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Ventajas de la utilización de la lista de visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Trabajo con objetos de visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 Manipulación de objetos de visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Animación de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 Carga dinámica de contenido de visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 Ejemplo: SpriteArranger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 Capítulo 14: Utilización de la API de dibujo Fundamentos de la utilización de la API de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Aspectos básicos de la clase Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Dibujo de líneas y curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Dibujo de formas mediante los métodos incorporados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Creación de líneas y rellenos degradados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Utilización de la clase Math con los métodos de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 Animación con la API de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Ejemplo: Generador visual algorítmico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 Utilización avanzada de la API de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 Trazados de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 Definición de reglas de trazo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Utilización de clases de datos gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Utilización de drawTriangles() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 Capítulo 15: Trabajo con la geometría Fundamentos de geometría . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Utilización de objetos Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Utilización de objetos Rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Utilización de objetos Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 Ejemplo: Aplicación de una transformación de matriz a un objeto de visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
  • 6. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH vi Contenido Capítulo 16: Aplicación de filtros a objetos de visualización Fundamentos de la aplicación de filtros a los objetos de visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 Creación y aplicación de filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 Filtros de visualización disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Ejemplo: Filter Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 Capítulo 17: Trabajo con sombreados de Pixel Bender Fundamentos de los sombreados de Pixel Bender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Carga e incorporación de un sombreado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 Acceso a los metadatos de sombreado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Especificación de valores de entrada y parámetro de sombreado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 Utilización de un sombreado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Capítulo 18: Trabajo con clips de película Fundamentos de la utilización de película . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 Trabajo con objetos MovieClip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 Control de la reproducción de clips de película . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 Creación de objetos MovieClip con ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 Carga de un archivo SWF externo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 Ejemplo: RuntimeAssetsExplorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Capítulo 19: Trabajo con interpolaciones de movimiento Fundamentos de interpolaciones de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Copiar scripts de interpolación de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 Incorporación de scripts de interpolación de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 Descripción de la animación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Añadir filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 Asociación de una interpolación de movimiento con sus objetos de visualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 Capítulo 20: Trabajo con cinemática inversa Fundamentos de cinemática inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 Información general sobre animación de esqueletos IK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Obtener información sobre un esqueleto IK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Creación de una instancia de la clase IKMover y limitación del movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Desplazamiento de un esqueleto IK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Utilización de eventos IK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Capítulo 21: Trabajo con texto Fundamentos de la utilización de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 Utilización de la clase TextField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 Utilización de Flash Text Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 Capítulo 22: Trabajo con mapas de bits Fundamentos de la utilización de mapas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Las clases Bitmap y BitmapData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Manipulación de píxeles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 Copiar datos de mapas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Creación de texturas con funciones de ruido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
  • 7. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH vii Contenido Desplazarse por mapas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 Aprovechamiento de la técnica de mipmapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 Ejemplo: Luna giratoria animada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 Capítulo 23: Trabajo en tres dimensiones (3D) Fundamentos del concepto 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 Aspectos básicos de las funciones 3D de Flash Player y el tiempo de ejecución de AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Creación y movimiento de objetos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Proyección de objetos 3D en una vista bidimensional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 Ejemplo: Proyección en perspectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 Transformaciones 3D complejas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 Utilización de triángulos para efectos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 Capítulo 24: Trabajo con vídeo Fundamentos de la utilización de vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 Aspectos básicos de los formatos de vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 Aspectos básicos de la clase Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 Carga de archivos de vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 Control de la reproducción de vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 Reproducción de vídeo en modo de pantalla completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 Transmisión de archivos de vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Aspectos básicos de los puntos de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Escritura de métodos callback para metadatos y puntos de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 Utilización de puntos de referencia y metadatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 Captura de entradas de cámara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 Envío de vídeo a un servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 Temas avanzados para archivos FLV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 Ejemplo: Gramola de vídeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 Capítulo 25: Trabajo con sonido Fundamentos de la utilización de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 Aspectos básicos de la arquitectura de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 Carga de archivos de sonido externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 Trabajo con sonidos incorporados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 Trabajo con archivos de flujo de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 Trabajo con sonido generado dinámicamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 Reproducción de sonidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588 Consideraciones de seguridad al cargar y reproducir sonidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 Control de desplazamiento y volumen de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Trabajo con metadatos de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Acceso a datos de sonido sin formato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 Captura de entradas de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 Ejemplo: Podcast Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 Capítulo 26: Captura de entradas del usuario Fundamentos de la captura de entradas del usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 Captura de entradas de teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
  • 8. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH viii Contenido Captura de entradas de ratón . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 Ejemplo: WordSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 Capítulo 27: Redes y comunicación Fundamentos de redes y comunicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621 Trabajo con datos externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624 Conexión con otras instancias de Flash Player y AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 Conexiones de socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 Almacenamiento de datos locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 Trabajo con archivos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 Ejemplo: Generación de un cliente Telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 Ejemplo: Carga y descarga de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 Capítulo 28: Entorno del sistema del cliente Fundamentos del entorno del sistema del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 Utilización de la clase System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 Utilización de la clase Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 Utilización de la clase ApplicationDomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 Utilización de la clase IME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 Ejemplo: Detección de las características del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 Capítulo 29: Copiar y pegar Conceptos básicos de copiar y pegar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 Lectura y escritura en el portapapeles del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 Formatos de datos del portapapeles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679 Capítulo 30: Impresión Fundamentos de impresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 Impresión de una página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 Interfaz de impresión del sistema y tareas de Flash Player y AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 Configuración del tamaño, la escala y la orientación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 Ejemplo: Impresión de varias páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 Ejemplo: Ajuste de escala, recorte y respuesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692 Capítulo 31: Utilización de la API externa Fundamentos de la utilización de la API externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 Requisitos y ventajas de la API externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 Utilización de la clase ExternalInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 Ejemplo: Utilización de la API externa con una página Web contenedora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 Ejemplo: Utilización de la API externa con un contenedor ActiveX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708 Capítulo 32: Seguridad de Flash Player Información general sobre la seguridad de Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 Entornos limitados de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716 Controles de permiso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 Restricción de las API de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 Seguridad del modo de pantalla completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 Carga de contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
  • 9. PROGRAMACIÓN CON ACTIONSCRIPT 3.0 PARA FLASH ix Contenido Reutilización de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731 Acceso a medios cargados como datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 Carga de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737 Carga de contenido incorporado de archivos SWF importados en un dominio de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 Trabajo con contenido heredado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 Configuración de permisos de LocalConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 Control del acceso URL saliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741 Objetos compartidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 Acceso a la cámara, el micrófono, el portapapeles, el ratón y el teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
  • 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.