manual programacion actionscript 3.0

838
PROGRAMACIÓN CON ACTIONSCRIPT 3.0

Upload: lazaro-de-los-angeles-rodriguez-dehara

Post on 03-Jan-2016

72 views

Category:

Documents


1 download

TRANSCRIPT

  • PROGRAMACIN CON ACTIONSCRIPT 3.0

  • 2007 Adobe Systems Incorporated. Todos los derechos reservados.

    Programacin con ActionScript 3.0

    Si 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, el logotipo de Adobe, Flex, Flex Builder y Flash Player son marcas registradas o marcas comerciales de Adobe Systems Incorporated en Estados Unidos y/o en otros pases.

    ActiveX y Windows son marcas registradas o marcas comerciales de Microsoft Corporation en Estados Unidos y en otros pases. Macintosh es una marca comercial de Apple Inc., registrada en Estados Unidos y/o en otros pases. Todas las dems marcas comerciales son propiedad de sus propietarios respectivos.

    La tecnologa de compresin y descompresin de voz tiene licencia de Nellymoser, Inc. (www.nellymoser.com).

    La tecnologa de compresin y descompresin de vdeo Sorenson Spark tiene licencia de Sorenson Media, Inc.

    Navegador Opera Copyright 1995-2002 Opera Software ASA y sus proveedores. Todos los derechos reservados.

    Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110, EE.UU.

    Aviso para usuarios finales del gobierno de EE.UU. El software y la documentacin son Artculos comerciales, segn la definicin de este trmino incluida en 48 C.F.R. 2.101, consistentes en Software informtico comercial y Documentacin de software informtico comercial, segn el uso aplicable de dichos trminos en 48 C.F.R. 12.212 48 C.F.R. 227.7202. En conformidad con 48 C.F.R. 12.212 48 C.F.R. 227.7202-1 a 227.7202-4 (lo que corresponda), se otorga a usuarios finales del gobierno de EE.UU. una licencia del Software informtico comercial y la Documentacin de software informtico comercial (a) nicamente como elementos comerciales y (b) exclusivamente con los derechos concedidos a todos los dems usuarios finales para su utilizacin en conformidad con los trminos y las condiciones aqu descritos. Derechos no publicados reservados bajo las leyes de derechos de autor de Estados Unidos. Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110-2704, EE.UU. Para los usuarios finales del gobierno de EE.UU., Adobe se compromete a cumplir todas las leyes de igualdad de oportunidades aplicables incluidas, si corresponde, las disposiciones del decreto-ley 11246, con las enmiendas, Seccin 402 de la Ley de ayuda para la readaptacin de los veteranos de Vietnam de 1974 (38 USC 4212) y Seccin 503 de la Ley de Rehabilitacin de 1973, con las enmiendas, y los reglamentos de los apartados 60-1 a 60-60, 60-250 y 60-741 de 41 CFR. La clusula de discriminacin positiva y los reglamentos incluidos en la declaracin anterior deben incorporarse mediante referencia.

  • 3Contenido

    Acerca de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    Utilizacin de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Acceso a la documentacin de ActionScript . . . . . . . . . . . . . . . . . . . . . . 15Recursos de aprendizaje de ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . 17

    Captulo 1: Introduccin a ActionScript 3.0 . . . . . . . . . . . . . . . . . . 19

    ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Ventajas de ActionScript 3.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Novedades de ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    Funciones del ncleo del lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Funciones de la API de Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    Compatibilidad con versiones anteriores . . . . . . . . . . . . . . . . . . . . . . . . 25

    Captulo 2: Introduccin a ActionScript . . . . . . . . . . . . . . . . . . . . .27

    Fundamentos de la programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27Para qu sirven los programas informticos . . . . . . . . . . . . . . . . . . . .27Variables y constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    Utilizacin de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Mtodos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    Gestin bsica de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Anlisis del proceso de gestin de eventos. . . . . . . . . . . . . . . . . . 35Ejemplos de gestin de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    Creacin de instancias de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Elementos comunes de los programas . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Ejemplo: Animation portfolio piece (sitio de muestras de animacin) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Creacin de aplicaciones con ActionScript . . . . . . . . . . . . . . . . . . . . . . 48

    Opciones para organizar el cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Seleccin de la herramienta adecuada . . . . . . . . . . . . . . . . . . . . . . . . 50Proceso de desarrollo de ActionScript . . . . . . . . . . . . . . . . . . . . . . . . 52

  • 4 Contenido

    Creacin de clases personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Estrategias de diseo de una clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Escritura del cdigo de una clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Sugerencias para organizar las clases . . . . . . . . . . . . . . . . . . . . . . . . . 56

    Ejemplo: creacin de una aplicacin bsica . . . . . . . . . . . . . . . . . . . . . . 57Ejecucin de ejemplos posteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    Captulo 3: El lenguaje ActionScript y su sintaxis . . . . . . . . . . . . . 67

    Informacin general sobre el lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Objetos y clases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Paquetes y espacios de nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    Paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Espacios de nombres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    Verificacin de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Clases dinmicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94Descripcin de los tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Conversiones de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Condicionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

    Fundamentos de la utilizacin de funciones . . . . . . . . . . . . . . . . . . . 126Parmetros de funcin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Funciones como objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137mbito de una funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

    Captulo 4: Programacin orientada a objetos con ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

    Fundamentos de la programacin orientada a objetos. . . . . . . . . . . . 142Clases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

    Definiciones de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Atributos de propiedad de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151Mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153Enumeraciones con clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Clases de activos incorporados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

    Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Temas avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178Ejemplo: GeometricShapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

  • Contenido 5

    Captulo 5: Utilizacin de fechas y horas . . . . . . . . . . . . . . . . . . . 197

    Fundamentos de la utilizacin de fechas y horas . . . . . . . . . . . . . . . . . 197Administracin de fechas de calendario y horas . . . . . . . . . . . . . . . . . .198Control de intervalos de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Ejemplo: un sencillo reloj analgico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

    Captulo 6: Utilizacin de cadenas . . . . . . . . . . . . . . . . . . . . . . . 209

    Fundamentos de la utilizacin de cadenas. . . . . . . . . . . . . . . . . . . . . . .210Creacin de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212La propiedad length. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213Utilizacin de caracteres en cadenas. . . . . . . . . . . . . . . . . . . . . . . . . . . .214Comparacin de cadenas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214Obtencin de representaciones de cadena de otros objetos . . . . . . .215Concatenacin de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215Bsqueda de subcadenas y patrones en cadenas . . . . . . . . . . . . . . . .216Conversin de cadenas de maysculas a minsculas y viceversa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221Ejemplo: Arte ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

    Captulo 7: Utilizacin de matrices . . . . . . . . . . . . . . . . . . . . . . . 229

    Fundamentos de la utilizacin de matrices. . . . . . . . . . . . . . . . . . . . . . 229Matrices indexadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232Matrices asociativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241Matrices multidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Clonacin de matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248Temas avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248Ejemplo: PlayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

    Captulo 8: Gestin de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

    Fundamentos de la gestin de errores . . . . . . . . . . . . . . . . . . . . . . . . . 262Tipos de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265Gestin de errores en ActionScript 3.0. . . . . . . . . . . . . . . . . . . . . . . . . 267

    Elementos de la gestin de errores de ActionScript 3.0 . . . . . . . 268Estrategias de gestin de errores. . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

    Utilizacin de la versin de depuracin de Flash Player . . . . . . . . . . 270Gestin de errores sincrnicos en una aplicacin. . . . . . . . . . . . . . . . . 271Creacin de clases de error personalizadas. . . . . . . . . . . . . . . . . . . . . 276Respuesta al estado y a los eventos de error . . . . . . . . . . . . . . . . . . . . 277

  • 6 Contenido

    Comparacin de las clases Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Clases Error principales de ECMAScript. . . . . . . . . . . . . . . . . . . . . .282Clases Error principales de ActionScript . . . . . . . . . . . . . . . . . . . . . .285Clases Error del paquete flash.error . . . . . . . . . . . . . . . . . . . . . . . . . .286

    Ejemplo: aplicacin CustomErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288

    Captulo 9: Utilizacin de expresiones regulares. . . . . . . . . . . . 295

    Fundamentos de la utilizacin de expresiones regulares . . . . . . . . . .296Sintaxis de las expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . 299

    Creacin de una instancia de expresin regular. . . . . . . . . . . . . . . 300Caracteres, metacaracteres y metasecuencias . . . . . . . . . . . . . . . . 301Clases de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304Cuantificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306Alternancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308Grupos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308Indicadores y propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

    Mtodos para utilizar expresiones regulares con cadenas. . . . . . . . . 317Ejemplo: un analizador de Wiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

    Captulo 10: Gestin de eventos . . . . . . . . . . . . . . . . . . . . . . . . . 325

    Fundamentos de la gestin de eventos . . . . . . . . . . . . . . . . . . . . . . . . .326Diferencias entre la gestin de eventos en ActionScript 3.0 y en las versiones anteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329El flujo del evento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333Objetos de evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335Detectores de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341Ejemplo: reloj con alarma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

    Captulo 11: Utilizacin de XML . . . . . . . . . . . . . . . . . . . . . . . . . . .357

    Fundamentos de la utilizacin de XML. . . . . . . . . . . . . . . . . . . . . . . . . .357El enfoque E4X del procesamiento de XML . . . . . . . . . . . . . . . . . . . . .362Objetos XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .364Objetos XMLList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .367Inicializacin de variables XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368Construccin y transformacin de objetos XML . . . . . . . . . . . . . . . . .370Navegacin de estructuras XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371Utilizacin de espacios de nombres XML . . . . . . . . . . . . . . . . . . . . . . . 377Conversin de tipo XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378Lectura de documentos XML externos . . . . . . . . . . . . . . . . . . . . . . . . 380Ejemplo: cargar datos de RSS desde Internet . . . . . . . . . . . . . . . . . . 380

  • Contenido 7

    Captulo 12: Programacin de la visualizacin. . . . . . . . . . . . . . 385

    Fundamentos de la programacin de la visualizacin . . . . . . . . . . . . 386Clases principales de visualizacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .391Ventajas de la utilizacin de la lista de visualizacin. . . . . . . . . . . . . . 394Utilizacin de objetos de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . 397

    Propiedades y mtodos de la clase DisplayObject . . . . . . . . . . . . 397Adicin de objetos de visualizacin a la lista de visualizacin . . . 398Utilizacin de contenedores de objetos de visualizacin . . . . . . . 399Recorrido de la lista de visualizacin. . . . . . . . . . . . . . . . . . . . . . . . . 403Configuracin de las propiedades de Stage . . . . . . . . . . . . . . . . . . 405Gestin de eventos de objetos de visualizacin . . . . . . . . . . . . . . . 409Seleccin de una subclase DisplayObject . . . . . . . . . . . . . . . . . . . . . 411

    Manipulacin de objetos de visualizacin. . . . . . . . . . . . . . . . . . . . . . . .412Cambio de posicin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .412Desplazamiento lateral y vertical de objetos de visualizacin . . . .418Manipulacin del tamao y ajuste de escala de los objetos . . . . . 420

    Control de la distorsin durante el ajuste de escala. . . . . . . . . . 422Almacenamiento en cach de los objetos de visualizacin . . . . . 424

    Cundo es conveniente activar la cach . . . . . . . . . . . . . . . . . . . 425Activar cach de mapa de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427Configuracin de un color de fondo opaco . . . . . . . . . . . . . . . . . 427

    Aplicacin de modos de mezcla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428Ajuste de los colores de DisplayObject. . . . . . . . . . . . . . . . . . . . . . . 429

    Configuracin de los valores de color a travs del cdigo . . . . 430Modificacin de efectos de color y brillo a travs

    del cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430Rotacin de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432Hacer aparecer o desaparecer objetos progresivamente. . . . . . . 432Enmascaramiento de objetos de visualizacin . . . . . . . . . . . . . . . . 432

    Animacin de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436Carga dinmica de contenido de visualizacin . . . . . . . . . . . . . . . . . . 438

    Carga de objetos de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . 438Supervisin del progreso de carga . . . . . . . . . . . . . . . . . . . . . . . . . . 439Especificacin del contexto de carga . . . . . . . . . . . . . . . . . . . . . . . . .441

    Ejemplo: SpriteArranger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

    Captulo 13: Utilizacin de la geometra . . . . . . . . . . . . . . . . . . . .451

    Fundamentos de la geometra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .451Utilizacin de objetos Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454Utilizacin de objetos Rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457Utilizacin de objetos Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .461Ejemplo: aplicacin de una transformacin de matriz a un objeto de visualizacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462

  • 8 Contenido

    Captulo 14: Utilizacin de la API de dibujo . . . . . . . . . . . . . . . . 467

    Fundamentos de la utilizacin de la API de dibujo. . . . . . . . . . . . . . . .468Aspectos bsicos de la clase Graphics. . . . . . . . . . . . . . . . . . . . . . . . . .470Dibujo de lneas y curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470Dibujo de formas mediante los mtodos incorporados. . . . . . . . . . . .474Creacin de lneas y rellenos degradados . . . . . . . . . . . . . . . . . . . . . . .475Utilizacin de la clase Math con los mtodos de dibujo . . . . . . . . . . 480Animacin con la API de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481Ejemplo: generador visual algortmico . . . . . . . . . . . . . . . . . . . . . . . . . .482

    Captulo 15: Aplicacin de filtros a objetos de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

    Fundamentos de la aplicacin de filtros a los objetos de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485Creacin y aplicacin de filtros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .487

    Creacin de un filtro nuevo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .487Aplicacin de un filtro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .488Funcionamiento de los filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490Posibles problemas al trabajar con filtros . . . . . . . . . . . . . . . . . . . . 490

    Filtros de visualizacin disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492Filtro de bisel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493Filtro de desenfoque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494Filtro de sombra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495Filtro de iluminado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496Filtro de bisel degradado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .497Filtro de iluminado degradado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498Ejemplo: combinacin de filtros bsicos . . . . . . . . . . . . . . . . . . . . . 499Filtro de matriz de colores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501Filtro de convolucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502Filtro de mapa de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . 505

    Ejemplo: Filter Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .511

    Captulo 16: Utilizacin de clips de pelcula . . . . . . . . . . . . . . . . . 513

    Fundamentos de la utilizacin de pelcula . . . . . . . . . . . . . . . . . . . . . . . 513Utilizacin de objetos MovieClip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516Control de la reproduccin de clips de pelcula . . . . . . . . . . . . . . . . . . 516

    Utilizacin de escenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519Creacin de objetos MovieClip con ActionScript. . . . . . . . . . . . . . . . 520

    Exportacin de smbolos de biblioteca para ActionScript . . . . . . . 521Carga de un archivo SWF externo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524Ejemplo: RuntimeAssetsExplorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .525

  • Contenido 9

    Captulo 17: Utilizacin de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

    Fundamentos de la utilizacin de texto . . . . . . . . . . . . . . . . . . . . . . . . . 532Visualizacin de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

    Tipos de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535Edicin del contenido de un campo de texto. . . . . . . . . . . . . . . . . . 536Visualizacin de texto HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536Utilizacin de imgenes en campos de texto . . . . . . . . . . . . . . . . . 537Desplazamiento de texto en un campo de texto. . . . . . . . . . . . . . . 538

    Seleccin y manipulacin de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539Captura de entrada de texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540Restriccin de la entrada de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542Formato de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542

    Asignacin de formatos de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543Aplicacin de hojas de estilos en cascada . . . . . . . . . . . . . . . . . . . . 543Carga de un archivo CSS externo . . . . . . . . . . . . . . . . . . . . . . . . . . . 545Formato de rangos de texto en un campo de texto . . . . . . . . . . . . 546

    Representacin de texto avanzada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547Utilizacin de texto esttico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550Ejemplo: Formato de texto de tipo peridico . . . . . . . . . . . . . . . . . . . . .551

    Lectura del archivo CSS externo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552Disposicin de los elementos de la noticia en la pgina . . . . . . . . 554Modificacin del tamao de fuente para ajustar el tamao

    de un campo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555Divisin del texto en varias columnas . . . . . . . . . . . . . . . . . . . . . . . . 557

    Captulo 18: Utilizacin de mapas de bits . . . . . . . . . . . . . . . . . . . 561

    Fundamentos de la utilizacin de mapas de bits . . . . . . . . . . . . . . . . . .561Las clases Bitmap y BitmapData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565Manipulacin de pxeles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

    Manipulacin de pxeles individuales. . . . . . . . . . . . . . . . . . . . . . . . . 567Deteccin de colisiones a nivel de pxeles . . . . . . . . . . . . . . . . . . . . 569

    Copia de datos de mapas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571Creacin de texturas con funciones de ruido . . . . . . . . . . . . . . . . . . . . 572Desplazamiento por mapas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575Ejemplo: animacin de objetos Sprite utilizando un mapa de bits que est fuera de la pantalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576

    Captulo 19: Utilizacin de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . 577

    Fundamentos de la utilizacin de vdeo. . . . . . . . . . . . . . . . . . . . . . . . . 578Aspectos bsicos del formato Flash Video (FLV). . . . . . . . . . . . . . . . .581Aspectos bsicos de la clase Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582Carga de archivos de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583

  • 10 Contenido

    Control de la reproduccin de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . .584Deteccin del final de un flujo de vdeo . . . . . . . . . . . . . . . . . . . . . . .585

    Transmisin de archivos de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .586Aspectos bsicos de los puntos de referencia . . . . . . . . . . . . . . . . . . .586Escritura de mtodos callback para onCuePoint y onMetaData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .588

    Definicin de la propiedad client del objeto NetStream en Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .589

    Creacin de una clase personalizada y definicin de mtodos para controlar los mtodos callback . . . . . . . . . . . 590

    Ampliacin de la clase NetStream y adicin de mtodos para controlar los mtodos callback . . . . . . . . . . . . . . . . . . . . . . 590

    Ampliacin y dinamizacin de la clase NetStream . . . . . . . . . . . . 592Establecimiento de la propiedad client del

    objeto NetStream en this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593Utilizacin de puntos de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594Utilizacin de metadatos de vdeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595Captura de entradas de cmara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599

    Aspectos bsicos de la clase Camera . . . . . . . . . . . . . . . . . . . . . . . 599Visualizacin de contenido de cmara en pantalla . . . . . . . . . . . . 599Diseo de la aplicacin de cmara . . . . . . . . . . . . . . . . . . . . . . . . . . 600Conexin a la cmara de un usuario . . . . . . . . . . . . . . . . . . . . . . . . . 600Comprobacin de que las cmaras estn instaladas . . . . . . . . . . . 601Deteccin de permisos para el acceso a una cmara. . . . . . . . . . 602Maximizacin de la calidad de vdeo . . . . . . . . . . . . . . . . . . . . . . . . 604Control de las condiciones de reproduccin. . . . . . . . . . . . . . . . . . 605Envo de vdeo a un servidor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606

    Temas avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606Compatibilidad de Flash Player con archivos

    FLV codificados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606Configuracin de archivos FLV para alojar en el servidor . . . . . . .607Utilizacin de archivos FLV locales en Macintosh . . . . . . . . . . . . 608

    Ejemplo: Jukebox de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608

    Captulo 20: Utilizacin de sonido. . . . . . . . . . . . . . . . . . . . . . . . . 615

    Fundamentos de la utilizacin de sonido . . . . . . . . . . . . . . . . . . . . . . . . 616Aspectos bsicos de la arquitectura de sonido. . . . . . . . . . . . . . . . . . . 619Carga de archivos de sonido externos . . . . . . . . . . . . . . . . . . . . . . . . . 620Utilizacin de sonidos incorporados . . . . . . . . . . . . . . . . . . . . . . . . . . . .624Utilizacin de archivos de flujo de sonido . . . . . . . . . . . . . . . . . . . . . . .625Reproduccin de sonidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .626

    Pausa y reanudacin de un sonido . . . . . . . . . . . . . . . . . . . . . . . . . . .627Control de la reproduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .628Detener flujos de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630

  • Contenido 11

    Consideraciones de seguridad al cargar y reproducir sonidos. . . . . 630Control de desplazamiento y volumen de sonido . . . . . . . . . . . . . . . . .631Utilizacin de metadatos de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634Acceso a datos de sonido sin formato. . . . . . . . . . . . . . . . . . . . . . . . . . 635Captura de entradas de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638

    Acceso a un micrfono. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638Enrutamiento de audio de micrfono a altavoces locales. . . . . . . 640Alteracin del audio de micrfono . . . . . . . . . . . . . . . . . . . . . . . . . . . 640Deteccin de actividad del micrfono. . . . . . . . . . . . . . . . . . . . . . . . .641Intercambio de audio con un servidor multimedia . . . . . . . . . . . . . 642

    Ejemplo: Podcast Player. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643Lectura de datos RSS para un canal podcast. . . . . . . . . . . . . . . . . 644Simplificacin de la carga y la reproduccin

    de sonido mediante la clase SoundFacade. . . . . . . . . . . . . . . . . 644Visualizacin del progreso de reproduccin . . . . . . . . . . . . . . . . . . 648Pausa y reanudacin de la reproduccin . . . . . . . . . . . . . . . . . . . . . 649Ampliacin del ejemplo de Podcast Player . . . . . . . . . . . . . . . . . . . 650

    Captulo 21: Captura de entradas del usuario. . . . . . . . . . . . . . . . 651

    Fundamentos de la captura de entradas del usuario . . . . . . . . . . . . . .651Captura de entradas de teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653Captura de entradas de ratn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656Ejemplo: WordSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .661

    Captulo 22: Redes y comunicacin . . . . . . . . . . . . . . . . . . . . . . 665

    Fundamentos de redes y comunicacin . . . . . . . . . . . . . . . . . . . . . . . . 665Utilizacin de datos externos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669Conexin a otras instancias de Flash Player . . . . . . . . . . . . . . . . . . . . 676Conexiones de socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682Almacenamiento de datos locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688Utilizacin de la carga y descarga de archivos . . . . . . . . . . . . . . . . . . .691Ejemplo: generacin de un cliente Telnet . . . . . . . . . . . . . . . . . . . . . . . 703Ejemplo: carga y descarga de archivos . . . . . . . . . . . . . . . . . . . . . . . . . 706

    Captulo 23: Entorno del sistema del cliente . . . . . . . . . . . . . . . . 715

    Fundamentos del entorno del sistema cliente . . . . . . . . . . . . . . . . . . . . 715Utilizacin de la clase System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718Utilizacin de la clase Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719Utilizacin de la clase ApplicationDomain . . . . . . . . . . . . . . . . . . . . . . 720Utilizacin de la clase IME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724Ejemplo: deteccin de las caractersticas del sistema . . . . . . . . . . . . 730

  • 12 Contenido

    Captulo 24: Impresin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .735

    Fundamentos de la impresin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .736Impresin de una pgina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .738Tareas de Flash Player e impresin del sistema. . . . . . . . . . . . . . . . . .739Configuracin del tamao, la escala y la orientacin. . . . . . . . . . . . . .742Ejemplo: impresin de varias pginas. . . . . . . . . . . . . . . . . . . . . . . . . . .745Ejemplo: ajuste de escala, recorte y respuesta . . . . . . . . . . . . . . . . . . . 747

    Captulo 25: Utilizacin de la API externa . . . . . . . . . . . . . . . . . 749

    Fundamentos de la utilizacin de la API externa . . . . . . . . . . . . . . . . .750Requisitos y ventajas de la API externa . . . . . . . . . . . . . . . . . . . . . . . . .753Utilizacin de la clase ExternalInterface . . . . . . . . . . . . . . . . . . . . . . . . .755

    Obtencin de informacin acerca del contenedor externo . . . . . .755Llamadas a cdigo externo desde ActionScript . . . . . . . . . . . . . . .756Llamadas a cdigo ActionScript desde el contenedor. . . . . . . . . . 757El formato XML de la API externa . . . . . . . . . . . . . . . . . . . . . . . . . . . .758

    Ejemplo: utilizacin de la API externa con una pgina Web contenedora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .760Ejemplo: utilizacin de la API externa con un contenedor ActiveX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .768

    Captulo 26: Seguridad de Flash Player. . . . . . . . . . . . . . . . . . . . 777

    Informacin general sobre la seguridad de Flash Player . . . . . . . . . . 778Informacin general sobre controles de permisos . . . . . . . . . . . . . . . . 781Entornos limitados de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .792Restriccin de las API de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .795Seguridad del modo de pantalla completa . . . . . . . . . . . . . . . . . . . . . . 797Carga de contenido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .798Reutilizacin de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802Acceso a medios cargados como datos. . . . . . . . . . . . . . . . . . . . . . . . 806Carga de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809Carga de contenido incorporado de archivos SWF importados en un dominio de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812Utilizacin de contenido heredado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813Configuracin de permisos de LocalConnection . . . . . . . . . . . . . . . . . 814Control del acceso a scripts en una pgina Web de alojamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814Objetos compartidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816Acceso a la cmara, el micrfono, el portapapeles, el ratn y el teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818

    ndice alfabtico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819

  • 13

    Acerca de este manual

    Este manual proporciona una base para desarrollar aplicaciones con ActionScript 3.0. Para entender mejor las ideas y tcnicas descritas en este manual es necesario tener unas nociones bsicas sobre programacin, como saber qu son los tipos de datos, las variables, los bucles y las 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.

    ContenidoUtilizacin de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    Acceso a la documentacin de ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    Recursos de aprendizaje de ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17

  • 14 Acerca de este manual

    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 manera que resulten fciles de cargar y utilizar con Adobe Flash CS3 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 2 Utilizando cualquier editor de texto y un compilador de lnea de comandos, como el

    proporcionado con Flex Builder 2 Mediante la herramienta de edicin Adobe Flash CS3 Professional

    Para ms informacin sobre los entornos de desarrollo de ActionScript, consulte el Captulo 1, Introduccin a ActionScript 3.0.

    Captulo Descripcin

    En los captulos 1 a 4 se ofrece informacin general sobre la programacin en ActionScript

    Se tratan conceptos bsicos sobre ActionScript 3.0, como la sintaxis del lenguaje, las sentencias y los operadores, la especificacin del borrador del lenguaje ECMAScript edicin 4, la programacin orientada a objetos en ActionScript y el nuevo enfoque para administrar objetos de visualizacin en la lista de visualizacin de Adobe Flash Player 9.

    En los captulos 5 a 10 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 que tambin forman parte de la especificacin del borrador de ECMAScript.

    En los captulos 11 a 26 se describen las API de Flash Player

    Se explican caractersticas importantes implementadas en paquetes y clases especficos de Adobe Flash Player 9, como el control de eventos, las conexiones de red y las comunicaciones, la entrada y salida de archivos, la interfaz externa, el modelo de seguridad de aplicaciones, etc.

  • Acceso a la documentacin de ActionScript 15

    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 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 ms informacin, consulte Acceso a la documentacin de ActionScript en la pgina 15.

    Acceso a la documentacin de ActionScriptEste manual se centra en describir ActionScript 3.0, un completo y eficaz lenguaje de programacin orientada 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, los mtodos, las propiedades y los eventos del lenguaje. La Referencia del lenguaje y componentes ActionScript 3.0 proporciona informacin de referencia detallada sobre el ncleo del lenguaje, los componentes Flash (de los paquetes fl) y las API de Flash Player (de los paquetes flash).

    Documentacin de FlashSi utiliza el entorno de desarrollo de Flash, es posible que desee consultar estos manuales:

    Manual Descripcin

    Utilizacin de Flash Describe la manera de desarrollar aplicaciones Web dinmicas en el entorno 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

  • 16 Acerca de este manual

    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 Flash y la API de ActionScript 3.0

    Utilizacin de componentes ActionScript 3.0 Explica los detalles de la utilizacin de componentes para desarrollar aplicaciones 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 Flash y la API de ActionScript 2.0

    Utilizacin de componentes ActionScript 2.0 Explica de forma detallada cmo utilizar componentes ActionScript 2.0 para desarrollar aplicaciones 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, de las funciones de ActionScript disponibles en Flash Lite 2.x

    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

    Manual Descripcin

  • Recursos de aprendizaje de ActionScript 17

    Recursos de aprendizaje de ActionScriptAdems del contenido de estos manuales, Adobe proporciona regularmente artculos actualizados, ideas de diseo y ejemplos en el Centro de desarrolladores de Adobe y en Adobe Design Center (centro de diseo de Adobe).

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

    Adobe Design Center (centro de diseo de Adobe)Pngase 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. Visite el centro de diseo en www.adobe.com/go/designcenter_es.

    Introduccin a Flash Lite 1.x Proporciona una introduccin a Flash Lite 1.x y describe la manera de probar contenido con el emulador de Adobe Device Central CS3

    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 la forma de usar los elementos de ActionScript disponibles en Flash Lite 1.x

    Manual Descripcin

  • 18 Acerca de este manual

  • 19

    1CAPTULO 1

    Introduccin a ActionScript 3.0

    En este captulo se ofrece informacin general sobre ActionScript 3.0, la versin ms reciente e innovadora de ActionScript.

    ContenidoActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    Ventajas de ActionScript 3.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    Novedades de ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    Compatibilidad con versiones anteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    ActionScriptActionScript es el lenguaje de programacin para el entorno de tiempo de ejecucin de Adobe Flash Player. Activa, entre otras muchas cosas, la interactividad y la gestin de datos en el contenido y las aplicaciones de Flash.

    ActionScript se ejecuta mediante la mquina virtual ActionScript (AVM), que forma parte de Flash Player. El cdigo ActionScript se suele compilar a 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 CS3 Professional o en Adobe Flex Builder, o el que est disponible en el SDK de Adobe Flex y en Flex Data Services. El cdigo de bytes est incorporado en los archivos SWF ejecutados por Flash Player, el entorno de tiempo de ejecucin.

    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 son:

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

  • 20 Introduccin a ActionScript 3.0

    Una base de cdigo de compilador ms moderna, que se ajusta mejor al estndar ECMAScript (ECMA 262) y 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.

    Un ncleo del lenguaje basado en el prximo borrador de especificacin del lenguaje ECMAScript (ECMA-262) edicin 4.

    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 9, 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 admite AVM1 por compatibilidad con contenido existente y heredado de versiones anteriores. Para ms informacin, consulte Compatibilidad con versiones anteriores en la pgina 25.

    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.

  • Novedades de ActionScript 3.0 21

    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 9 realiza la comprobacin de tipos en tiempo de ejecucin, lo que mejora la seguridad de 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.

  • 22 Introduccin a ActionScript 3.0

    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.

    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 ms informacin sobre la implementacin de E4X en ActionScript 3.0, consulte el Captulo 11, Utilizacin de XML, en la pgina 357.

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

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

    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.

  • Novedades de ActionScript 3.0 23

    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 PlayerLa API de Flash Player en ActionScript 3.0 contiene muchas de las nuevas clases que permiten controlar objetos a bajo nivel. La arquitectura del lenguaje es completamente nueva y ms intuitiva. Hay demasiadas clases nuevas para poder tratarlas con detalle, de modo que en las siguientes secciones se destacan algunos cambios importantes.

    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.

    API de la lista de visualizacinLa API de acceso a la lista de visualizacin de Flash Player (el rbol que contiene todos los elementos visuales de una aplicacin Flash) se compone de clases para trabajar con elementos visuales simples en Flash.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, 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.

  • 24 Introduccin a ActionScript 3.0

    Gestin de contenido y datos dinmicosActionScript 3.0 contiene mecanismos para cargar y gestionar elementos y datos en la aplicacin Flash, 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.

    Utilizacin de textoActionScript 3.0 contiene un paquete flash.text para todas las API relacionadas con texto. La clase TextLineMetrics proporciona las medidas detalladas de una lnea de texto en un campo de texto; sustituye el mtodo TextField.getLineMetrics() de ActionScript 2.0. La clase TextField contiene varios mtodos nuevos de bajo nivel interesantes, que pueden proporcionar 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 anteriores 25

    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 algunas dificultades 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.

    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 deben migrarse si van a funcionar conjuntamente con archivos SWF escritos en ActionScript 3.0. Por ejemplo, supongamos que se crea un reproductor de medios con ActionScript 2.0. El reproductor de medios carga contenido diverso tambin creado con ActionScript 2.0. No es posible crear contenido nuevo 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.

  • 26 Introduccin a ActionScript 3.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.

    Funcionalidad que ofrece

    Entorno de tiempo de ejecucin

    Flash Player 7 Flash Player 8 Flash Player 9

    Puede cargar archivos SWF publicados para

    7 y versiones anteriores

    8 y versiones anteriores

    9 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 que ofrece*

    * Contenido ejecutado en Flash Player 9 o versiones posteriores. 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.

    Contenido creado en

    ActionScript 1.0 y 2.0 ActionScript 3.0

    Puede cargar contenido y ejecutar cdigo en contenido creado en

    Slo ActionScript 1.0 y 2.0ActionScript 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 LocalConnection.

    ActionScript 3.0

    ActionScript 1.0 y 2.0 a travs de LocalConnection.

  • 27

    2CAPTULO 2

    Introduccin a ActionScript

    Este captulo se ha diseado como punto de partida para empezar 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.

    ContenidoFundamentos de la programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    Utilizacin de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    Elementos comunes de los programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    Ejemplo: Animation portfolio piece (sitio de muestras de animacin) . . . . . . . . . . . 44

    Creacin de aplicaciones con ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    Creacin de clases personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    Ejemplo: creacin de una aplicacin bsica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    Ejecucin de ejemplos posteriores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    Fundamentos de la 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.

  • 28 Introduccin a ActionScript

    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.

    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

  • Fundamentos de la programacin 29

    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 CS3 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.

    Tipos de datosEn ActionScript se pueden utilizar muchos tipos de datos para 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

    Boolean: un valor true (verdadero) o false (falso), por ejemplo, si un conmutador est activado o si dos valores son iguales

  • 30 Introduccin a ActionScript

    Los tipos de datos sencillos representan un solo dato: por ejemplo, un solo 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. Sin embargo, dicho valor de fecha se representa realmente con varios valores: da, mes, ao, horas, minutos, segundos, etc., todos ellos 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 como una plantilla de todos los objetos del tipo de datos, como si se dijera que todas las variables del tipo de datos Ejemplo tiene estas caractersticas: A, B y C. Por otro lado, un objeto es simplemente una instancia real de una clase; una variable cuyo tipo de datos es MovieClip podra describirse 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.

  • Utilizacin de objetos 31

    Utilizacin de 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.

    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 entorno de edicin de Flash tambin se pueden realizar en ActionScript cambiando los elementos de datos que se agrupan en un nico paquete denominado objeto MovieClip.

    En la programacin orientada a objetos de ActionScript, hay tres tipos de caractersticas que puede contener cualquier clase:

    Propiedades Mtodos Eventos

    Estos elementos se utilizan conjuntamente para administrar los elementos de datos que utiliza el programa y para decidir qu acciones deben llevarse a cabo y en qu orden.

  • 32 Introduccin a ActionScript

    PropiedadesUna propiedad representa uno de los elementos de datos que se empaquetan en un objeto. Un objeto Song (cancin) puede tener propiedades denominadas artist (artista) y title (ttulo); la clase MovieClip tiene propiedades como rotation (rotacin), x, width (anchura) y alpha (alfa). Se trabaja con las propiedades del mismo modo que con las variables individuales; de hecho, se podra pensar que las propiedades son simplemente las variables secundarias contenidas en un objeto.

    A continuacin se muestran algunos ejemplos de cdigo ActionScript que utiliza propiedades. Esta lnea de cdigo mueve el objeto MovieClip denominado square a la coordenada x = 100 pxeles:square.x = 100;

    Este cdigo utiliza la propiedad rotation para que el objeto MovieClip square gire de forma correspondiente a la rotacin del objeto MovieClip triangle:square.rotation = triangle.rotation;

    Este cdigo altera la escala horizontal del objeto MovieClip square para hacerlo 1,5 veces ms ancho:square.scaleX = 1.5;

    Observe la estructura comn: se utiliza una variable (square, triangle) como nombre del objeto, seguida de un punto (.) y del nombre de la propiedad (x, rotation, scaleX). El punto, denominado operador de punto, se utiliza para indicar el acceso a uno de los elementos secundarios de un objeto. El conjunto de la estructura (nombre de variable-punto-nombre de propiedad) se utiliza como una sola variable, como un nombre de un solo valor en la memoria del equipo.

    MtodosUn mtodo es una accin que puede llevar a cabo un objeto. Por ejemplo, si se ha creado un smbolo de clip de pelcula en Flash con varios fotogramas clave y animacin en la lnea de tiempo, ese clip de pelcula podr reproducirse, detenerse o recibir instrucciones para mover la cabeza lectora a un determinado fotograma.

    Este cdigo indica al objeto MovieClip denominado shortFilm que inicie su reproduccin:shortFilm.play();

    Esta lnea hace que el objeto MovieClip denominado shortFilm deje de reproducirse (la cabeza lectora se detiene como si se hiciera una pausa en un vdeo):shortFilm.stop();

  • Utilizacin de objetos 33

    Este cdigo hace que un objeto MovieClip denominado shortFilm mueva su cabeza lectora al fotograma 1 y deje de reproducirse (como si se rebobinara un vdeo):shortFilm.gotoAndStop(1);

    Como puede verse, para acceder a los mtodos, se debe escribir el nombre del objeto (una variable), un punto y el nombre del mtodo seguido de un parntesis, siguiendo la misma estructura que para las propiedades. El parntesis es una forma de indicar que se est llamando al mtodo, es decir, indicando al objeto que realice esa accin. Algunos valores (o variables) se incluyen dentro del parntesis para pasar informacin adicional necesaria para llevar a cabo la accin. Estos valores se denominan parmetros del mtodo. Por ejemplo, el mtodo gotoAndStop() necesita saber cul es el fotograma al que debe dirigirse, de modo que requiere un solo parmetro en el parntesis. Otros mtodos como play() y stop() no requieren informacin adicional porque son descriptivos por s mismos. Sin embargo, tambin se escriben con parntesis.

    A diferencia de las propiedades (y las variables), los mtodos no se usan como identificadores de valores. No obstante, algunos mtodos pueden realizar clculos y devolver un resultado que puede usarse como una variable. Por ejemplo, el mtodo toString() de la clase Number convierte el valor numrico en su representacin de texto:var numericData:Number = 9;var textData:String = numericData.toString();

    Por ejemplo, se usara el mtodo toString() para mostrar el valor de una variable Number en un campo de texto de la pantalla. La propiedad text de la clase TextField (que representa el contenido de texto real que se muestra en la pantalla) se define como String (cadena), de modo que slo puede contener valores de texto. Esta lnea de cdigo convierte en texto el valor numrico de la variable numericData y, a continuacin, hace que aparezca en la pantalla en el objeto TextField denominado calculatorDisplay:calculatorDisplay.text = numericData.toString();

    EventosSe ha descrito un programa informtico como una serie de instrucciones que el ordenador lleva a cabo paso a paso. Algunos programas informticos sencillos no son ms que eso: unos cuantos pasos que el ordenador ejecuta, tras los cuales finaliza el programa. Sin embargo, los programas de ActionScript se han diseado para continuar ejecutndose, esperando los datos introducidos por el usuario u otras acciones. Los eventos son los mecanismos que determinan qu instrucciones lleva a cabo el ordenador y cundo las realiza.

  • 34 Introduccin a ActionScript

    Bsicamente, los eventos son acciones que ActionScript conoce y a las que puede responder. Muchos eventos se relacionan con la interaccin del usuario (hacer clic en un botn, presionar una tecla del teclado, etc.) pero tambin existen otros tipos de eventos. Por ejemplo, si se usa ActionScript para cargar una imagen externa, existe un evento que puede indicar al usuario cundo finaliza la carga de la imagen. En esencia, cuando se ejecuta un programa de ActionScript, Adobe Flash Player simplemente espera a que ocurran determinadas acciones y, cuando suceden, ejecuta el cdigo ActionScript que se haya especificado para tales eventos.

    Gestin bsica de eventosLa tcnica para especificar determinadas acciones que deben realizarse como respuesta a eventos concretos se denomina gestin de eventos. Cuando se escribe cdigo ActionScript para llevar a cabo la gestin de eventos, se deben identificar tres elementos importantes:

    El origen del evento: en qu objeto va a repercutir el evento? Por ejemplo, en qu botn se har clic o qu objeto Loader est cargando la imagen? El origen del evento tambin se denomina objetivo del evento, ya que es el objeto al que Flash Player (donde tiene lugar realmente el evento) destina el evento.

    El evento: qu va a suceder, a qu se va a responder? Es importante identificar esto porque muchos objetos activan varios eventos.

    La respuesta: qu pasos hay que llevar a cabo cuando ocurra el evento?

    Siempre que se escriba cdigo ActionScript para gestionar eventos, el cdigo debe incluir estos tres elementos y debe seguir esta estructura bsica (los elementos en negrita son marcadores de posicin que hay que completar en cada caso concreto):function eventResponse(eventObject:EventType):void{

    // Aqu deben incluirse las acciones realizadas en respuesta al evento.}

    eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);

    Este cdigo hace dos cosas. En primer lugar, define una funcin, que es la forma de especificar las acciones que desean realizarse como respuesta al evento. A continuacin, llama al mtodo addEventListener() del objeto de origen, bsicamente suscribiendo la funcin al evento especificado de modo que se lleven a cabo las acciones de la funcin cuando ocurra el evento. Cada una de estas partes se tratar con mayor detalle.

  • Utilizacin de objetos 35

    Una funcin proporciona un modo de agrupar acciones con un nico nombre que viene a ser un nombre de mtodo abreviado para llevar a cabo las acciones. Una funcin es idntica a un mtodo excepto en que no est necesariamente asociada a una clase determinada (de hecho, es posible definir un mtodo como una funcin asociada a una clase determinada). Cuando se crea una funcin para la gestin de eventos, se debe elegir el nombre de la funcin (denominada eventResponse en este caso) y se debe especificar adems un parmetro (denominado eventObject en este ejemplo). Especificar un parmetro de una funcin equivale a declarar una variable, de modo que tambin hay que indicar el tipo de datos del parmetro. Hay una clase de ActionScript definida para cada evento y el tipo de datos que se especifica para el parmetro de funcin es siempre la clase asociada con el evento especfico al que se desea responder. Por ltimo, entre las llaves de apertura y cierre ({ ... }), se escriben las instrucciones que debe llevar a cabo el equipo cuando ocurra el evento.

    Despus de escribir la funcin de gestin de eventos, es necesario indicar al objeto de origen del evento (el objeto en el que se produce el evento, por ejemplo, el botn) que se desea llamar a la funcin cuando ocurra el evento. Para ello es necesario llamar al mtodo addEventListener() de dicho objeto (todos los objetos que tienen eventos tambin tienen un mtodo addEventListener()). El mtodo addEventListener() utiliza dos parmetros:

    En primer lugar, el nombre del evento especfico al que se desea responder. De nuevo, cada evento se asocia a una clase especfica, que tiene a su vez un valor especial predefinido para cada evento (como un nombre exclusivo propio del evento), que debe usarse como primer parmetro.

    En segundo lugar, el nombre de la funcin de respuesta al evento. Hay que tener en cuenta que el nombre de una funcin debe escribirse sin parntesis cuando se pasa como un parmetro.

    Anlisis del proceso de gestin de eventosA continuacin se ofrece una descripcin paso a paso del proceso que tiene lugar cuando se crea un detector de eventos. En este caso, es un ejemplo de creacin de funcin de detector a la que se llama cuando se hace clic en un objeto denominado myButton.

    El cdigo escrito por el programador es el siguiente:function eventResponse(event:MouseEvent):void{

    // Actions performed in response to the event go here.}

    myButton.addEventListener(MouseEvent.CLICK, eventResponse);

  • 36 Introduccin a ActionScript

    Al ejecutarse en Flash Player, el cdigo funcionara de la manera siguiente:

    1. Cuando se carga el archivo SWF, Flash Player detecta que existe una funcin denominada eventResponse().

    2. A continuacin, Flash Player ejecuta el cdigo (especficamente, las lneas de cdigo que no estn en una funcin). En este caso, slo una lnea de cdigo que llama al mtodo addEventListener() en el objeto de origen de evento (denominado myButton) y pasa la funcin eventResponse como parmetro.

  • Utilizacin de objetos 37

    a. Internamente, myButton tiene una lista de funciones que detecta cada uno de sus eventos, por lo que cuando se llama a su mtodo addEventListener(), myButton almacena la funcin eventResponse() en su lista de detectores de eventos.

    3. Cuando el usuario hace clic en el objeto myButton, se activa el evento click (identificado como MouseEvent.CLICK en el cdigo).

    En este punto ocurre lo siguiente:a. Flash Player crea un objeto, una instancia de la clase asociada con el evento en cuestin

    (MouseEvent en este ejemplo). Para muchos eventos esto ser una instancia de la clase Event, para eventos del ratn ser una instancia de MouseEvent y para otros eventos ser una instancia de la clase asociada con el evento. Este objeto que se crea se denomina objeto de evento y contiene informacin especfica sobre el evento que se ha producido: el tipo de evento, dnde se ha producido y otros datos especficos del evento si corresponde.

  • 38 Introduccin a ActionScript

    b. A continuacin, Flash Player busca en la lista de detectores de eventos almacenada en myButton. Recorre estas funciones de una en una, llamando a cada funcin y pasando el objeto de evento a la funcin como parmetro. Como la funcin eventResponse() es uno de los detectores de myButton, como parte de este proceso Flash Player llama a la funcin eventResponse().

    c. Cuando se llama a la funcin eventResponse(), se ejecuta el cdigo de la funcin para realizar las acciones especificadas.

  • Utilizacin de objetos 39

    Ejemplos de gestin de eventosA continuacin se ofrecen ms ejemplos concretos de eventos para proporcionar una idea de algunos de los elementos comunes de los eventos y de las posibles variaciones disponibles cuando se escribe cdigo de gestin de eventos:

    Hacer clic en un botn para iniciar la reproduccin del clip de pelcula actual. En el siguiente ejemplo, playButton es el nombre de instancia del botn y this es el nombre especial, que significa el objeto actual:this.stop();

    function playMovie(event:MouseEvent):void{

    this.play();}

    playButton.addEventListener(MouseEvent.CLICK, playMovie);

    Detectar que se est escribiendo en un campo de texto. En este ejemplo, entryText es un campo de introduccin de texto y outputText es un campo de texto dinmico:function updateOutput(event:TextEvent):void{

    var pressedKey:String = event.text;outputText.text = "You typed: " + pressedKey;

    }

    entryText.addEventListener(TextEvent.TEXT_INPUT, updateOutput);

    Hacer clic en un botn para navegar a un URL. En este caso, linkButton es el nombre de instancia del botn:function gotoAdobeSite(event:MouseEvent):void{

    var adobeURL:URLRequest = new URLRequest("http://www.adobe.com/");navigateToURL(adobeURL);

    }

    linkButton.addEventListener(MouseEvent