Flash As3 Programming

768
Programación con ADOBE ® ACTIONSCRIPT ® 3.0

Transcript of Flash As3 Programming

  • Programacin con ADOBE ACTIONSCRIPT 3.0

  • Copyright 2008 Adobe Systems Incorporated. All rights reserved.Programacin con Adobe ActionScript 3.0 para Adobe FlashSi esta gua se distribuye con software que incluye un contrato de usuario final, la gua, as como el software descrito en ella, se proporciona con una licencia y slo puede usarse o copiarse en conformidad con los trminos de dicha licencia. Con la excepcin de lo permitido por la licencia, ninguna parte de esta gua puede ser reproducida, almacenada en un sistema de recuperacin de datos ni transmitida de ninguna forma ni por ningn medio, ya sea electrnico, mecnico, de grabacin o de otro tipo, sin el consentimiento previo por escrito de Adobe Systems Incorporated. Tenga en cuenta que el contenido de esta gua 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 gua 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 gua.Recuerde que las ilustraciones o imgenes existentes que desee incluir en su proyecto pueden estar protegidas por las leyes de derechos de autor. La incorporacin no autorizada de este material en sus trabajos puede infringir los derechos del propietario de los derechos de autor. Asegrese de obtener los permisos necesarios del propietario de los derechos de autor.Cualquier referencia a nombres de compaas en plantillas de ejemplo slo se hace con propsitos de demostracin y no est relacionada con ninguna organizacin 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, USANotice 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

    Captulo 1: Informacin sobre este manualUtilizacin de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    Acceso a la documentacin de ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    Recursos de aprendizaje de ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    Captulo 2: Introduccin a ActionScript 3.0ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    Ventajas de ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    Novedades de ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    Compatibilidad con versiones anteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    Captulo 3: Introduccin a ActionScriptFundamentos de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    Trabajo con objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    Elementos comunes de los programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    Ejemplo: Sitio de muestras de animacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    Creacin de aplicaciones con ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    Creacin de clases personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    Ejemplo: Creacin de una aplicacin bsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    Ejecucin de ejemplos posteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    Captulo 4: El lenguaje ActionScript y su sintaxisInformacin 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

    Captulo 5: Programacin orientada a objetos con ActionScriptFundamentos de la programacin orientada a objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

    Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

    Temas avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

    Ejemplo: GeometricShapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

    Captulo 6: Trabajo con fechas y horasFundamentos de la utilizacin de fechas y horas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

    Administracin de fechas de calendario y horas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

  • ivPROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHContenido

    Control de intervalos de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

    Ejemplo: Sencillo reloj analgico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    Captulo 7: Trabajo con cadenas Fundamentos de la utilizacin de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

    Creacin de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

    La propiedad length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

    Trabajo con caracteres en cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

    Comparar cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

    Obtencin de representaciones de cadena de otros objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

    Concatenacin de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

    Bsqueda de subcadenas y patrones en cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

    Conversin de cadenas de maysculas a minsculas y viceversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

    Ejemplo: ASCII art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

    Captulo 8: Trabajo con conjuntosFundamentos de la utilizacin de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

    Conjuntos indexados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

    Conjuntos asociativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

    Conjuntos multidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

    Clonacin de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

    Temas avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

    Ejemplo: PlayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

    Captulo 9: Gestin de erroresFundamentos de la gestin de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

    Tipos de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

    Gestin de errores en ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

    Trabajo con las versiones de depuracin de Flash Player y AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

    Gestin de errores sincrnicos en una aplicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

    Creacin de clases de error personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    Respuesta al estado y a los eventos de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    Comparacin de las clases Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

    Ejemplo: Aplicacin CustomErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

    Captulo 10: Utilizacin de expresiones regularesFundamentos de la utilizacin de expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

    Sintaxis de las expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

    Mtodos para utilizar expresiones regulares con cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

    Ejemplo: Analizador Wiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

    Captulo 11: Trabajo con XMLFundamentos de la utilizacin de XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

    El enfoque E4X del procesamiento de XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

    Objetos XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

    Objetos XMLList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

    Inicializacin de variables XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

    Construccin y transformacin de objetos XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

  • vPROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHContenido

    Navegacin de estructuras XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

    Utilizacin de espacios de nombres XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

    Conversin de tipo XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

    Lectura de documentos XML externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

    Ejemplo: Carga de datos de RSS desde Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

    Captulo 12: Gestin de eventosFundamentos de la gestin de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

    Diferencias entre la gestin 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

    Captulo 13: Programacin de la visualizacinFundamentos de la programacin de la visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

    Clases principales de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

    Ventajas de la utilizacin de la lista de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

    Trabajo con objetos de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

    Manipulacin de objetos de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

    Animacin de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

    Carga dinmica de contenido de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

    Ejemplo: SpriteArranger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

    Captulo 14: Utilizacin de la API de dibujoFundamentos de la utilizacin de la API de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

    Aspectos bsicos de la clase Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

    Dibujo de lneas y curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

    Dibujo de formas mediante los mtodos incorporados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

    Creacin de lneas y rellenos degradados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

    Utilizacin de la clase Math con los mtodos de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

    Animacin con la API de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

    Ejemplo: Generador visual algortmico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

    Utilizacin avanzada de la API de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

    Trazados de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

    Definicin de reglas de trazo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

    Utilizacin de clases de datos grficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

    Utilizacin de drawTriangles() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

    Captulo 15: Trabajo con la geometraFundamentos de geometra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

    Utilizacin de objetos Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

    Utilizacin de objetos Rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

    Utilizacin de objetos Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

    Ejemplo: Aplicacin de una transformacin de matriz a un objeto de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

  • viPROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHContenido

    Captulo 16: Aplicacin de filtros a objetos de visualizacinFundamentos de la aplicacin de filtros a los objetos de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

    Creacin y aplicacin de filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364

    Filtros de visualizacin disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

    Ejemplo: Filter Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

    Captulo 17: Trabajo con sombreados de Pixel BenderFundamentos de los sombreados de Pixel Bender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395

    Carga e incorporacin de un sombreado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

    Acceso a los metadatos de sombreado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

    Especificacin de valores de entrada y parmetro de sombreado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

    Utilizacin de un sombreado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

    Captulo 18: Trabajo con clips de pelculaFundamentos de la utilizacin de pelcula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

    Trabajo con objetos MovieClip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419

    Control de la reproduccin de clips de pelcula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419

    Creacin de objetos MovieClip con ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422

    Carga de un archivo SWF externo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424

    Ejemplo: RuntimeAssetsExplorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

    Captulo 19: Trabajo con interpolaciones de movimientoFundamentos de interpolaciones de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

    Copiar scripts de interpolacin de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

    Incorporacin de scripts de interpolacin de movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

    Descripcin de la animacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

    Aadir filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

    Asociacin de una interpolacin de movimiento con sus objetos de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

    Captulo 20: Trabajo con cinemtica inversaFundamentos de cinemtica inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

    Informacin general sobre animacin de esqueletos IK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

    Obtener informacin sobre un esqueleto IK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441

    Creacin de una instancia de la clase IKMover y limitacin del movimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441

    Desplazamiento de un esqueleto IK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

    Utilizacin de eventos IK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

    Captulo 21: Trabajo con textoFundamentos de la utilizacin de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444

    Utilizacin de la clase TextField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

    Utilizacin de Flash Text Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

    Captulo 22: Trabajo con mapas de bitsFundamentos de la utilizacin de mapas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495

    Las clases Bitmap y BitmapData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498

    Manipulacin de pxeles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499

    Copiar datos de mapas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502

    Creacin de texturas con funciones de ruido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503

  • viiPROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHContenido

    Desplazarse por mapas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505

    Aprovechamiento de la tcnica de mipmapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506

    Ejemplo: Luna giratoria animada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506

    Captulo 23: Trabajo en tres dimensiones (3D)Fundamentos del concepto 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518

    Aspectos bsicos de las funciones 3D de Flash Player y el tiempo de ejecucin de AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

    Creacin y movimiento de objetos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521

    Proyeccin de objetos 3D en una vista bidimensional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523

    Ejemplo: Proyeccin en perspectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

    Transformaciones 3D complejas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527

    Utilizacin de tringulos para efectos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530

    Captulo 24: Trabajo con vdeoFundamentos de la utilizacin de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538

    Aspectos bsicos de los formatos de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

    Aspectos bsicos de la clase Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543

    Carga de archivos de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543

    Control de la reproduccin de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544

    Reproduccin de vdeo en modo de pantalla completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

    Transmisin de archivos de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

    Aspectos bsicos de los puntos de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

    Escritura de mtodos callback para metadatos y puntos de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551

    Utilizacin de puntos de referencia y metadatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556

    Captura de entradas de cmara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565

    Envo de vdeo a un servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

    Temas avanzados para archivos FLV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572

    Ejemplo: Gramola de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573

    Captulo 25: Trabajo con sonidoFundamentos de la utilizacin de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579

    Aspectos bsicos 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 dinmicamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586

    Reproduccin 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

    Captulo 26: Captura de entradas del usuarioFundamentos de la captura de entradas del usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610

    Captura de entradas de teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611

  • viiiPROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHContenido

    Captura de entradas de ratn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613

    Ejemplo: WordSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617

    Captulo 27: Redes y comunicacinFundamentos de redes y comunicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621

    Trabajo con datos externos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624

    Conexin 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: Generacin de un cliente Telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654

    Ejemplo: Carga y descarga de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657

    Captulo 28: Entorno del sistema del clienteFundamentos del entorno del sistema del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663

    Utilizacin de la clase System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665

    Utilizacin de la clase Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666

    Utilizacin de la clase ApplicationDomain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667

    Utilizacin de la clase IME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669

    Ejemplo: Deteccin de las caractersticas del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674

    Captulo 29: Copiar y pegarConceptos bsicos de copiar y pegar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678

    Lectura y escritura en el portapapeles del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678

    Formatos de datos del portapapeles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679

    Captulo 30: Impresin Fundamentos de impresin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684

    Impresin de una pgina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685

    Interfaz de impresin del sistema y tareas de Flash Player y AIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686

    Configuracin del tamao, la escala y la orientacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689

    Ejemplo: Impresin de varias pginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690

    Ejemplo: Ajuste de escala, recorte y respuesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692

    Captulo 31: Utilizacin de la API externaFundamentos de la utilizacin de la API externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695

    Requisitos y ventajas de la API externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697

    Utilizacin de la clase ExternalInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698

    Ejemplo: Utilizacin de la API externa con una pgina Web contenedora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702

    Ejemplo: Utilizacin de la API externa con un contenedor ActiveX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708

    Captulo 32: Seguridad de Flash PlayerInformacin general sobre la seguridad de Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714

    Entornos limitados de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716

    Controles de permiso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718

    Restriccin de las API de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725

    Seguridad del modo de pantalla completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727

    Carga de contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729

  • ixPROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHContenido

    Reutilizacin 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

    Configuracin de permisos de LocalConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740

    Control del acceso URL saliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741

    Objetos compartidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742

    Acceso a la cmara, el micrfono, el portapapeles, el ratn y el teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744

    ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745

  • 1Captulo 1: Informacin 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 tcnicas descritas, debe estar familiarizado con conceptos de programacin generales como, por ejemplo, tipos de datos, variables, bucles y funciones. Tambin hay que conocer conceptos bsicos sobre la programacin 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.

    Utilizacin de este manualLos captulos de este manual estn organizados en los siguientes grupos lgicos para ayudarle a encontrar reas relacionadas de la documentacin de ActionScript:

    Este manual tambin contiene numerosos archivos de ejemplo que ilustran conceptos de programacin de aplicaciones para clases importantes o utilizadas frecuentemente. Los archivos de ejemplo se empaquetan de forma que resulten fciles de cargar y utilizar con Adobe Flash CS4 Professional y pueden incluir archivos envolventes. Sin embargo, el ncleo del cdigo de ejemplo es puro cdigo ActionScript 3.0 que se puede utilizar en el entorno de desarrollo que se prefiera.

    Se puede escribir y compilar cdigo ActionScript 3.0 de varias maneras:

    Mediante el entorno de desarrollo Adobe Flex Builder 3.

    Utilizando cualquier editor de texto y un compilador de lnea de comandos, como el proporcionado con Flex Builder 3.

    Usando la herramienta de edicin Adobe Flash CS4 Professional.

    Para obtener ms informacin sobre los entornos de desarrollo de ActionScript, consulte Introduccin a ActionScript 3.0 en la pgina 4

    Para comprender los ejemplos de cdigo 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 edicin de Flash. No obstante, es conveniente consultar la documentacin de estas herramientas para aprender a utilizarlas y a escribir y compilar cdigo ActionScript 3.0. Para obtener ms informacin, consulte Acceso a la documentacin de ActionScript en la pgina 2.

    Captulo Descripcin

    En los captulos 2 a 5 se ofrece informacin general sobre la programacin en ActionScript.

    Se abordan los conceptos bsicos de ActionScript 3.0, incluida la sintaxis del lenguaje, sentencias, operadores y programacin ActionScript orientada a objetos.

    En los captulos 6 a 11, se describen las clases y los tipos de datos bsicos de ActionScript 3.0.

    Se describen los tipos de datos de nivel superior de ActionScript 3.0.

    En los captulos 12 a 32, se describen las API de Flash Player y de Adobe AIR.

    Se describen funciones importantes implementadas en paquetes y clases especficos de Adobe Flash Player y Adobe AIR, como el control de eventos, los objetos y la lista de visualizacin, las conexiones de red y las comunicaciones, la entrada y salida de archivos, la interfaz externa, el modelo de seguridad de aplicaciones, etc.

  • 2PROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHInformacin sobre este manual

    Acceso a la documentacin de ActionScriptEste manual se centra en describir ActionScript 3.0, un completo y eficaz lenguaje de programacin orientado a objetos. No incluye una descripcin detallada del proceso de desarrollo de aplicaciones ni del flujo de trabajo en una herramienta o arquitectura de servidor especfica. Por ello, adems de leer Programacin con ActionScript 3.0, es recomendable consultar otras fuentes de documentacin al disear, desarrollar, probar e implementar aplicaciones de ActionScript 3.0.

    Documentacin de ActionScript 3.0En este manual se explican los conceptos relacionados con la programacin en ActionScript 3.0, se muestran los detalles de implementacin y se proporcionan ejemplos que ilustran las caractersticas 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, mtodos, propiedades y eventos del lenguaje. La Referencia del lenguaje y componentes ActionScript 3.0 proporciona informacin de referencia detallada sobre el ncleo del lenguaje, los componentes de la herramienta de edicin de Flash (paquetes fl) y las API de Flash Player y de Adobe AIR (paquetes flash).

    Documentacin de FlashSi utiliza la herramienta de edicin de Flash, es posible que desee consultar estos manuales:

    Manual Descripcin

    Utilizacin de Flash Describe la manera de desarrollar aplicaciones Web dinmicas en la herramienta de edicin de Flash.

    Programacin con ActionScript 3.0 Describe el uso especfico 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 informacin sobre la sintaxis y el uso, as como ejemplos de cdigo, para los componentes de la herramienta de edicin de Flash y la API de ActionScript 3.0.

    Utilizacin 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 Professional

    Describe cmo desarrollar e implementar aplicaciones de Adobe AIR utilizando ActionScript 3.0 y la API de Adobe AIR en Flash

    Aprendizaje de ActionScript 2.0 en Adobe Flash Proporciona informacin general sobre la sintaxis de ActionScript 2.0 y sobre cmo utilizar ActionScript 2.0 al trabajar con distintos tipos de objetos

    Referencia del lenguaje ActionScript 2.0 Proporciona informacin sobre la sintaxis y el uso, as como ejemplos de cdigo, para los componentes de la herramienta de edicin de Flash y la API de ActionScript 2.0.

    Utilizacin de componentes ActionScript 2.0 Explica de forma detallada cmo 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 versin 2 de la arquitectura de componentes de Adobe, junto con su API

    Ampliacin de Flash Describe los objetos, mtodos y propiedades disponibles en la API de JavaScript

    Introduccin a Flash Lite 2.x Explica cmo utilizar Adobe Flash Lite 2.x para desarrollar aplicaciones y proporciona informacin sobre la sintaxis y el uso, as como ejemplos de cdigo para las funciones de ActionScript disponibles en Flash Lite 2.x

  • 3PROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHInformacin sobre este manual

    Recursos de aprendizaje de ActionScriptAdems del contenido de estos manuales, Adobe proporciona regularmente artculos actualizados, ideas de diseo y ejemplos en el Centro de desarrollo de Adobe y el Centro de diseo de Adobe.

    Centro de desarrollo de AdobeEl Centro de desarrollo de Adobe contiene la informacin ms actualizada sobre ActionScript, artculos sobre el desarrollo de aplicaciones reales e informacin sobre nuevos problemas importantes. Consulte el Centro de desarrollo de Adobe en http://www.adobe.com/es/devnet/.

    Centro de diseo de AdobePngase al da en diseo digital y grficos en movimiento. Examine la obra de importantes artistas, descubra las nuevas tendencias de diseo y mejore sus conocimientos con tutoriales, flujos de trabajo clave y tcnicas avanzadas. Consulte el centro cada quince das para ver tutoriales y artculos nuevos e inspirarse con las creaciones de las galeras. Consulte el centro de diseo en www.adobe.com/designcenter/.

    Desarrollo de aplicaciones de Flash Lite 2.x Explica cmo desarrollar aplicaciones de Flash Lite 2.x

    Introduccin a ActionScript en Flash Lite 2.x Ofrece una introduccin 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 informacin sobre la sintaxis y el uso, as como ejemplos de cdigo, de la API de ActionScript 2.0 disponible en Flash Lite 2.x

    Introduccin a Flash Lite 1.x Proporciona una introduccin 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 mviles con Flash Lite 1.x

    Aprendizaje de ActionScript en Flash Lite 1.x Explica cmo 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

    Manual Descripcin

  • 4Captulo 2: Introduccin a ActionScript 3.0

    En este captulo se ofrece informacin general sobre Adobe ActionScript 3.0, una de las versiones ms recientes e innovadoras de ActionScript.

    ActionScriptActionScript es el lenguaje de programacin para los entornos de tiempo de ejecucin de Adobe Flash Player y Adobe AIR. Entre otras muchas cosas, activa la interactividad y la gestin de datos en el contenido y las aplicaciones de Flash, Flex y AIR.

    ActionScript se ejecuta mediante la mquina virtual ActionScript (AVM), que forma parte de Flash Player y AIR. El cdigo de ActionScript se suele compilar en un formato de cdigo 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 cdigo de bytes est incorporado en los archivos SWF ejecutados por Flash Player y AIR.

    ActionScript 3.0 ofrece un modelo de programacin robusto que resultar familiar a los desarrolladores con conocimientos bsicos sobre programacin orientada a objetos. Algunas de las principales funciones de ActionScript 3.0 que mejoran las versiones anteriores son:

    Una nueva mquina virtual de ActionScript, denominada AVM2, que utiliza un nuevo conjunto de instrucciones de cdigo de bytes y proporciona importantes mejoras de rendimiento.

    Una base de cdigo de compilador ms moderna que realiza mejores optimizaciones que las versiones anteriores del compilador.

    Una interfaz de programacin de aplicaciones (API) ampliada y mejorada, con un control de bajo nivel de los objetos y un autntico modelo orientado a objetos.

    Una API XML basada en la especificacin de ECMAScript para XML (E4X) (ECMA-357 edicin 2). E4X es una extensin del lenguaje ECMAScript que aade XML como un tipo de datos nativo del lenguaje.

    Un modelo de eventos basado en la especificacin de eventos DOM (modelo de objetos de documento) de nivel 3.

    Ventajas de ActionScript 3.0ActionScript 3.0 aumenta las posibilidades de creacin de scripts de las versiones anteriores de ActionScript. Se ha diseado para facilitar la creacin de aplicaciones muy complejas con conjuntos de datos voluminosos y bases de cdigo 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 slo estn disponibles con AVM2, la nueva mquina virtual. El cdigo ActionScript 3.0 puede ejecutarse con una velocidad diez veces mayor que el cdigo ActionScript heredado.

    La versin anterior de la mquina virtual ActionScript (AVM1) ejecuta cdigo 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 ms informacin, consulte Compatibilidad con versiones anteriores en la pgina 7.

  • 5PROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHIntroduccin a ActionScript 3.0

    Novedades de ActionScript 3.0Aunque ActionScript 3.0 contiene muchas clases y funciones que resultarn 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 ncleo 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 tambin pueden utilizar las API de Flash Player.

    Funciones del ncleo del lenguajeEl ncleo del lenguaje est formado por los bloques bsicos del lenguaje de programacin, como sentencias, expresiones, condiciones, bucles y tipos. ActionScript 3.0 contiene muchas funciones nuevas que aceleran el proceso de desarrollo.

    Excepciones de tiempo de ejecucinActionScript 3.0 notifica ms situaciones de error que las versiones anteriores de ActionScript. Las excepciones de tiempo de ejecucin se utilizan en situaciones de error frecuentes y permiten mejorar la depuracin y desarrollar aplicaciones para gestionar errores de forma robusta. Los errores de tiempo de ejecucin pueden proporcionar trazas de pila con la informacin del archivo de cdigo fuente y el nmero de lnea. Esto permite identificar rpidamente los errores.

    Tipos de tiempo de ejecucinEn ActionScript 2.0, las anotaciones de tipos eran principalmente una ayuda para el desarrollador; en tiempo de ejecucin, se asignaban los tipos dinmicamente a todos los valores. En ActionScript 3.0, la informacin de tipos se conserva en tiempo de ejecucin y se utiliza con diversos fines. Flash Player y Adobe AIR realizan una verificacin de tipos en tiempo de ejecucin, mejorando la seguridad de los tipos del sistema. La informacin de tipos tambin se utiliza para especificar variables en representaciones nativas de la mquina, lo que mejora el rendimiento y reduce el uso de memoria.

    Clases cerradasActionScript 3.0 introduce el concepto de clases cerradas. Una clase cerrada posee nicamente el conjunto fijo de propiedades y mtodos definidos durante la compilacin; no es posible aadir propiedades y mtodos adicionales. Esto permite realizar una comprobacin ms estricta en tiempo de compilacin, lo que aporta una mayor solidez a los programas. Tambin mejora el uso de memoria, pues no requiere una tabla hash interna para cada instancia de objeto. Adems, es posible utilizar clases dinmicas mediante la palabra clave dynamic. Todas las clases de ActionScript 3.0 estn cerradas de forma predeterminada, pero pueden declararse como dinmicas con la palabra clave dynamic.

    Cierres de mtodosActionScript 3.0 permite que un cierre de mtodo recuerde automticamente su instancia de objeto original. Esta funcin resulta til en la gestin de eventos. En ActionScript 2.0, los cierres de mtodos no recordaban la instancia de objeto de la que se haban extrado, lo que provocaba comportamientos inesperados cuando se llamaba al cierre de mtodo. La clase mx.utils.Delegate permita solucionar este problema, pero ya no es necesaria.

  • 6PROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHIntroduccin 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 anlisis 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 drsticamente la cantidad de cdigo necesario. Para obtener ms informacin sobre la implementacin de E4X en ActionScript 3.0, consulte Trabajo con XML en la pgina 232.

    Para ver la especificacin de E4X publicada por ECMA, visite www.ecma-international.org.

    Expresiones regularesActionScript 3.0 ofrece compatibilidad nativa con expresiones regulares, que permiten encontrar y manipular cadenas rpidamente. ActionScript 3.0 implementa la compatibilidad con expresiones regulares tal y como se definen en la especificacin del lenguaje ECMAScript (ECMA-262) edicin 3.

    Espacios de nombresLos 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 tambin se utilizan para representar espacios de nombres XML cuando se trabaja con E4X.

    Nuevos tipos simplesActionScript 2.0 tiene un solo tipo numrico, Number, un nmero de coma flotante con precisin doble. ActionScript 3.0 contiene los tipos int y uint. El tipo int es un entero de 32 bits con signo que permite al cdigo ActionScript aprovechar las capacidades matemticas de manipulacin rpida 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 PlayerLas 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 diseada para ser mucho ms 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 tambin 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 estndar 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. Diseado a partir de la especificacin de eventos DOM de nivel 3 del World Wide Web Consortium, este modelo proporciona un mecanismo ms 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.

  • 7PROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHIntroduccin a ActionScript 3.0

    API de la lista de visualizacinLa API de acceso a la lista de visualizacin de Flash Player y Adobe AIR (el rbol que contiene todos los elementos visuales de una aplicacin Flash) se compone de clases para trabajar con elementos visuales simples.

    La nueva clase Sprite es un bloque bsico ligero, similar a la clase MovieClip pero ms 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 dinmica.

    La administracin de profundidad es ahora automtica y est incorporada en Flash Player y Adobe AIR, por lo que ya no es necesario asignar valores de profundidad. Se proporcionan nuevos mtodos para especificar y administrar el orden z de los objetos.

    Gestin de contenido y datos dinmicosActionScript 3.0 contiene mecanismos para cargar y gestionar elementos y datos en la aplicacin, 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 informacin 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 nivelDiversas 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 utilizacin de datos binarios. La nueva API Sound proporciona control detallado del sonido a travs de las clases SoundChannel y SoundMixer. Las nuevas API relacionadas con la seguridad proporcionan informacin sobre los privilegios de seguridad de un archivo SWF o contenido cargado, lo que permite gestionar mejor los errores de seguridad.

    Trabajo con textoActionScript 3.0 contiene un paquete flash.text para todas las API relacionadas con texto. La clase TextLineMetrics proporciona medidas detalladas para una lnea de texto en un campo de texto; sustituye al mtodo TextFormat.getTextExtent() en ActionScript 2.0. La clase TextField contiene una serie de nuevos mtodos interesantes de bajo nivel que pueden ofrecer informacin especfica sobre una lnea de texto o un solo carcter en un campo de texto. Dichos mtodos son: getCharBoundaries(), que devuelve un rectngulo que representa el recuadro de delimitacin de un carcter, getCharIndexAtPoint(), que devuelve el ndice del carcter en un punto especificado, y getFirstCharInParagraph(), que devuelve el ndice del primer carcter en un prrafo. Los mtodos de nivel de lnea son: getLineLength(), que devuelve el nmero de caracteres en una lnea de texto especificada, y getLineText(), que devuelve el texto de la lnea especificada. Una nueva clase Font proporciona un medio para administrar las fuentes incorporadas en archivos SWF.

    Compatibilidad con versiones anterioresComo 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 introduccin 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 cdigo ActionScript 1.0 2.0 con cdigo ActionScript 3.0 en un archivo SWF.

  • 8PROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHIntroduccin a ActionScript 3.0

    El cdigo 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 excepcin 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 ningn 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 parmetro 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 tambin 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 vdeo 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 ejecucin de cdigo, as como las limitaciones relativas a la reutilizacin de scripts entre archivos SWF escritos en distintas versiones de 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 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 ActionScript

    1.0 y 2.0 1.0 y 2.0 1.0, 2.0 y 3.0

    Funcionalidad admitida Contenido creado en ActionScript 1.0 y 2.0 Contenido creado en ActionScript 3.0

    Puede cargar contenido y ejecutar cdigo en contenido creado en

    Slo ActionScript 1.0 y 2.0 ActionScript 1.0 y 2.0, y ActionScript 3.0

    Puede reutilizar contenido de scripts creado en

    Slo ActionScript 1.0 y 2.0 (ActionScript 3.0 a travs de conexin local)

    ActionScript 1.0 y 2.0 a travs de LocalConnection.

    ActionScript 3.0

  • 9Captulo 3: Introduccin a ActionScript

    Este captulo se ha diseado 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 pginas de este manual. Para comenzar, se ofrece una descripcin de los conceptos bsicos de programacin en el contexto de su aplicacin en ActionScript. Tambin se tratan los aspectos fundamentales de la organizacin y creacin de una aplicacin ActionScript.

    Fundamentos de programacinDado que ActionScript es un lenguaje de programacin, ser de gran ayuda comprender primero algunos conceptos generales de programacin de ordenadores.

    Para qu sirven los programas informticosEn primer lugar, resulta til entender qu es un programa informtico y para qu sirve. Un programa informtico 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 manipulacin de informacin o datos.

    En general, un programa informtico 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 bsicamente una instruccin dada en un programa es manipular algn bit de datos almacenado en la memoria del equipo. En un caso sencillo, se puede indicar al equipo que sume dos nmeros y almacene el resultado en su memoria. En un caso ms complejo, se podra tener un rectngulo dibujado en la pantalla y escribir un programa para moverlo a algn otro lugar de la pantalla. El equipo realiza un seguimiento de determinada informacin relativa al rectngulo: las coordenadas x e y que indican su ubicacin, la anchura y altura, el color, etc. Cada uno de estos bits de informacin se almacena en algn lugar de la memoria del equipo. Un programa para mover el rectngulo a otra ubicacin incluira 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 algn modo para convertir estos nmeros 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 rectngulo en la pantalla" slo implica en realidad un cambio de bits de datos en la memoria del equipo.

    Variables y constantesDado que la programacin 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 nmero, para sumar esos dos nmeros se podra escribir la sentencia:

    value1 + value2

    Cuando lleve a cabo los pasos indicados, el equipo buscar los valores de cada variable y los sumar.

  • 10PROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHIntroduccin 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 cmo el equipo utiliza el nombre como marcador de posicin del valor. El tipo de datos tambin 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 slo pueden almacenar ese tipo de datos en la variable y se puede manipular el valor con las caractersticas 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 numricos ("Number" es un tipo de datos especfico definido en ActionScript). Tambin 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 smbolo de clip de pelcula, un smbolo de botn 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 cdigo ActionScript para hacer referencia a ese elemento del escenario. As, por ejemplo, si hay un smbolo de clip de pelcula en el escenario y se le asigna el nombre de instanciarocketShip, siempre que se use la variable rocketShip en el cdigo ActionScript, se estar manipulando dicho clip de pelcula.

    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 especfico. La diferencia es que a una constante slo se le puede asignar un valor cada vez en el curso de una aplicacin ActionScript. Tras asignar un valor a una constante, ste permanecer invariable en toda la aplicacin. 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 cdigo resulta ms legible. Por ejemplo, es ms fcil entender la finalidad de una lnea de cdigo que multiplica un precio por SALES_TAX_RATE que la de una lnea de cdigo que lo haga por 0.07. Adems, si en un momento dado es preciso cambiar el valor definido por una constante, slo habr que hacerlo en un punto (la declaracin de la constante) cuando se utiliza una constante para su representacin en el proyecto, en lugar de tener que modificarlo varias veces como cuando se utilizan valores literales especificados en el cdigo.

    Tipos de datosEn 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 captulo de un libro

    Numeric: ActionScript 3.0 incluye tres tipos de datos especficos para datos numricos:

    Number: cualquier valor numrico, incluidos los valores fraccionarios o no fraccionarios

    int: un entero (un nmero no fraccionario)

    uint: un entero sin signo, es decir, que no puede ser negativo

  • 11PROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHIntroduccin 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 informacin: por ejemplo, un nico nmero o una sola secuencia de texto. No obstante, la mayora de los tipos de datos definidos en ActionScript podran 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 da, el mes, el ao, las horas, los minutos, los segundos, etc., los cuales son nmeros 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 mayora 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 podran reconocerse son:

    MovieClip: un smbolo de clip de pelcula

    TextField: un campo de texto dinmico o de texto de entrada

    SimpleButton: un smbolo de botn

    Date: informacin sobre un solo momento temporal (una fecha y hora)

    Para referirse a los tipos de datos, a menudo se emplean como sinnimos las palabras clase y objeto. Una clase es simplemente la definicin 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 caractersticas: 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 podra 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 objetosActionScript es lo que se denomina un lenguaje de programacin orientado a objetos. La programacin orientada a objetos es simplemente un enfoque de la programacin, es decir, una forma de organizar el cdigo en un programa mediante objetos.

    Anteriormente se ha definido un programa informtico como una serie de pasos o instrucciones que lleva a cabo el equipo. As pues, conceptualmente se podra imaginar un programa informtico simplemente como una larga lista de instrucciones. Sin embargo, en la programacin orientada a objetos, las instrucciones del programa se dividen entre distintos objetos; el cdigo se agrupa en segmentos de funcionalidad, de modo que los tipos de funcionalidad relacionados o los elementos de informacin relacionados se agrupan en un contenedor.

    De hecho, si se ha trabajado con smbolos en Flash, se estar acostumbrado a trabajar con objetos. Supongamos que se ha definido un smbolo de clip de pelcula (por ejemplo, el dibujo de un rectngulo) y se ha colocado una copia del mismo en el escenario. Dicho smbolo de clip de pelcula tambin es (literalmente) un objeto en ActionScript; es una instancia de la clase MovieClip.

  • 12PROGRAMACIN CON ACTIONSCRIPT 3.0 PARA FLASHIntroduccin a ActionScript

    Es posible modificar algunas de las caractersticas del clip de pelcula. Por ejemplo, cuando est seleccionado, es posible cambiar algunos valores en el inspector de propiedades como, por ejemplo, la coordenada x o la anchura, o realizar algunos ajustes de color como cambiar su valor de transparencia alfa o aplicarle un filtro de sombra. Otras herramientas de Flash permiten realizar ms cambios, como utilizar la herramienta Transformacin libre para girar el rectngulo. Todas estas acciones para modificar un smbolo de clip de pelcula en el entor