838
PROGRAMACIÓN CON ACTIONSCRIPT 3.0

Manual Programacion ActionScript 3.0

Embed Size (px)

Citation preview

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.

Contenido

Acerca de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Utilizacin de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Acceso a la documentacin de ActionScript . . . . . . . . . . . . . . . . . . . . . . 15 Recursos de aprendizaje de ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . 17 Captulo 1: Introduccin a ActionScript 3.0 . . . . . . . . . . . . . . . . . . 19 ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Ventajas de ActionScript 3.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Novedades de ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Funciones del ncleo del lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Funciones de la API de Flash Player . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Compatibilidad con versiones anteriores . . . . . . . . . . . . . . . . . . . . . . . . 25 Captulo 2: Introduccin a ActionScript . . . . . . . . . . . . . . . . . . . . .27 Fundamentos de la programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 Para qu sirven los programas informticos . . . . . . . . . . . . . . . . . . . .27 Variables y constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Utilizacin de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Gestin bsica de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Anlisis del proceso de gestin de eventos. . . . . . . . . . . . . . . . . . 35 Ejemplos de gestin de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Creacin de instancias de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Elementos comunes de los programas . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Ejemplo: Animation portfolio piece (sitio de muestras de animacin) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Creacin de aplicaciones con ActionScript . . . . . . . . . . . . . . . . . . . . . . 48 Opciones para organizar el cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Seleccin de la herramienta adecuada . . . . . . . . . . . . . . . . . . . . . . . . 50 Proceso de desarrollo de ActionScript . . . . . . . . . . . . . . . . . . . . . . . . 52

3

Creacin de clases personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Estrategias de diseo de una clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Escritura del cdigo de una clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Sugerencias para organizar las clases . . . . . . . . . . . . . . . . . . . . . . . . . 56 Ejemplo: creacin de una aplicacin bsica . . . . . . . . . . . . . . . . . . . . . . 57 Ejecucin de ejemplos posteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Captulo 3: El lenguaje ActionScript y su sintaxis . . . . . . . . . . . . . 67 Informacin general sobre el lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Objetos y clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Paquetes y espacios de nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Espacios de nombres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Verificacin de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Clases dinmicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Descripcin de los tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Conversiones de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Condicionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Fundamentos de la utilizacin de funciones . . . . . . . . . . . . . . . . . . . 126 Parmetros de funcin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Funciones como objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 mbito de una funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Captulo 4: Programacin orientada a objetos con ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Fundamentos de la programacin orientada a objetos. . . . . . . . . . . . 142 Clases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Definiciones de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Atributos de propiedad de clase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 Mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Enumeraciones con clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Clases de activos incorporados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Temas avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Ejemplo: GeometricShapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

4

Contenido

Captulo 5: Utilizacin de fechas y horas . . . . . . . . . . . . . . . . . . . 197 Fundamentos de la utilizacin de fechas y horas . . . . . . . . . . . . . . . . . 197 Administracin de fechas de calendario y horas . . . . . . . . . . . . . . . . . .198 Control de intervalos de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Ejemplo: un sencillo reloj analgico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Captulo 6: Utilizacin de cadenas . . . . . . . . . . . . . . . . . . . . . . . 209 Fundamentos de la utilizacin de cadenas . . . . . . . . . . . . . . . . . . . . . . .210 Creacin de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212 La propiedad length. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213 Utilizacin de caracteres en cadenas. . . . . . . . . . . . . . . . . . . . . . . . . . . .214 Comparacin de cadenas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214 Obtencin de representaciones de cadena de otros objetos . . . . . . .215 Concatenacin de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215 Bsqueda de subcadenas y patrones en cadenas . . . . . . . . . . . . . . . .216 Conversin de cadenas de maysculas a minsculas y viceversa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221 Ejemplo: Arte ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Captulo 7: Utilizacin de matrices . . . . . . . . . . . . . . . . . . . . . . . 229 Fundamentos de la utilizacin de matrices. . . . . . . . . . . . . . . . . . . . . . 229 Matrices indexadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Matrices asociativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241 Matrices multidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Clonacin de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Temas avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Ejemplo: PlayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Captulo 8: Gestin de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Fundamentos de la gestin de errores . . . . . . . . . . . . . . . . . . . . . . . . . 262 Tipos de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Gestin de errores en ActionScript 3.0. . . . . . . . . . . . . . . . . . . . . . . . . 267 Elementos de la gestin de errores de ActionScript 3.0 . . . . . . . 268 Estrategias de gestin de errores. . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Utilizacin de la versin de depuracin de Flash Player . . . . . . . . . . 270 Gestin de errores sincrnicos en una aplicacin. . . . . . . . . . . . . . . . . 271 Creacin de clases de error personalizadas . . . . . . . . . . . . . . . . . . . . . 276 Respuesta al estado y a los eventos de error . . . . . . . . . . . . . . . . . . . . 277

Contenido

5

Comparacin de las clases Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Clases Error principales de ECMAScript. . . . . . . . . . . . . . . . . . . . . .282 Clases Error principales de ActionScript . . . . . . . . . . . . . . . . . . . . . .285 Clases Error del paquete flash.error . . . . . . . . . . . . . . . . . . . . . . . . . .286 Ejemplo: aplicacin CustomErrors . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288 Captulo 9: Utilizacin de expresiones regulares. . . . . . . . . . . . 295 Fundamentos de la utilizacin de expresiones regulares . . . . . . . . . .296 Sintaxis de las expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Creacin de una instancia de expresin regular. . . . . . . . . . . . . . . 300 Caracteres, metacaracteres y metasecuencias . . . . . . . . . . . . . . . . 301 Clases de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Cuantificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Alternancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 Indicadores y propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Mtodos para utilizar expresiones regulares con cadenas. . . . . . . . . 317 Ejemplo: un analizador de Wiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 Captulo 10: Gestin de eventos . . . . . . . . . . . . . . . . . . . . . . . . . 325 Fundamentos de la gestin de eventos . . . . . . . . . . . . . . . . . . . . . . . . .326 Diferencias entre la gestin de eventos en ActionScript 3.0 y en las versiones anteriores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329 El flujo del evento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333 Objetos de evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335 Detectores de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 Ejemplo: reloj con alarma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 Captulo 11: Utilizacin de XML . . . . . . . . . . . . . . . . . . . . . . . . . . .357 Fundamentos de la utilizacin de XML. . . . . . . . . . . . . . . . . . . . . . . . . . 357 El enfoque E4X del procesamiento de XML . . . . . . . . . . . . . . . . . . . . .362 Objetos XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .364 Objetos XMLList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 Inicializacin de variables XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368 Construccin y transformacin de objetos XML . . . . . . . . . . . . . . . . .370 Navegacin de estructuras XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Utilizacin de espacios de nombres XML . . . . . . . . . . . . . . . . . . . . . . . 377 Conversin de tipo XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 Lectura de documentos XML externos . . . . . . . . . . . . . . . . . . . . . . . . 380 Ejemplo: cargar datos de RSS desde Internet . . . . . . . . . . . . . . . . . . 380

6

Contenido

Captulo 12: Programacin de la visualizacin. . . . . . . . . . . . . . 385 Fundamentos de la programacin de la visualizacin . . . . . . . . . . . . 386 Clases principales de visualizacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .391 Ventajas de la utilizacin de la lista de visualizacin. . . . . . . . . . . . . . 394 Utilizacin de objetos de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . 397 Propiedades y mtodos de la clase DisplayObject . . . . . . . . . . . . 397 Adicin de objetos de visualizacin a la lista de visualizacin . . . 398 Utilizacin de contenedores de objetos de visualizacin . . . . . . . 399 Recorrido de la lista de visualizacin. . . . . . . . . . . . . . . . . . . . . . . . . 403 Configuracin de las propiedades de Stage . . . . . . . . . . . . . . . . . . 405 Gestin de eventos de objetos de visualizacin . . . . . . . . . . . . . . . 409 Seleccin de una subclase DisplayObject . . . . . . . . . . . . . . . . . . . . . 411 Manipulacin de objetos de visualizacin. . . . . . . . . . . . . . . . . . . . . . . .412 Cambio de posicin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .412 Desplazamiento lateral y vertical de objetos de visualizacin . . . .418 Manipulacin del tamao y ajuste de escala de los objetos . . . . . 420 Control de la distorsin durante el ajuste de escala. . . . . . . . . . 422 Almacenamiento en cach de los objetos de visualizacin . . . . . 424 Cundo es conveniente activar la cach . . . . . . . . . . . . . . . . . . . 425 Activar cach de mapa de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 Configuracin de un color de fondo opaco . . . . . . . . . . . . . . . . . 427 Aplicacin de modos de mezcla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 Ajuste de los colores de DisplayObject. . . . . . . . . . . . . . . . . . . . . . . 429 Configuracin de los valores de color a travs del cdigo . . . . 430 Modificacin de efectos de color y brillo a travs del cdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Rotacin de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 Hacer aparecer o desaparecer objetos progresivamente. . . . . . . 432 Enmascaramiento de objetos de visualizacin . . . . . . . . . . . . . . . . 432 Animacin de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Carga dinmica de contenido de visualizacin . . . . . . . . . . . . . . . . . . 438 Carga de objetos de visualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 Supervisin del progreso de carga . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Especificacin del contexto de carga . . . . . . . . . . . . . . . . . . . . . . . . .441 Ejemplo: SpriteArranger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Captulo 13: Utilizacin de la geometra . . . . . . . . . . . . . . . . . . . . 451 Fundamentos de la geometra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .451 Utilizacin de objetos Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 Utilizacin de objetos Rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 Utilizacin de objetos Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .461 Ejemplo: aplicacin de una transformacin de matriz a un objeto de visualizacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462

Contenido

7

Captulo 14: Utilizacin de la API de dibujo . . . . . . . . . . . . . . . . 467 Fundamentos de la utilizacin de la API de dibujo . . . . . . . . . . . . . . . .468 Aspectos bsicos de la clase Graphics. . . . . . . . . . . . . . . . . . . . . . . . . .470 Dibujo de lneas y curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470 Dibujo de formas mediante los mtodos incorporados. . . . . . . . . . . .474 Creacin de lneas y rellenos degradados . . . . . . . . . . . . . . . . . . . . . . .475 Utilizacin de la clase Math con los mtodos de dibujo . . . . . . . . . . 480 Animacin con la API de dibujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 Ejemplo: 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485 Creacin y aplicacin de filtros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Creacin de un filtro nuevo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 Aplicacin de un filtro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .488 Funcionamiento de los filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Posibles problemas al trabajar con filtros . . . . . . . . . . . . . . . . . . . . 490 Filtros de visualizacin disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 Filtro de bisel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 Filtro de desenfoque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 Filtro de sombra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 Filtro de iluminado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 Filtro de bisel degradado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .497 Filtro de iluminado degradado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 Ejemplo: combinacin de filtros bsicos . . . . . . . . . . . . . . . . . . . . . 499 Filtro de matriz de colores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 Filtro de convolucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 Filtro de mapa de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . 505 Ejemplo: Filter Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .511 Captulo 16: Utilizacin de clips de pelcula . . . . . . . . . . . . . . . . . 513 Fundamentos de la utilizacin de pelcula . . . . . . . . . . . . . . . . . . . . . . . 513 Utilizacin de objetos MovieClip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Control de la reproduccin de clips de pelcula . . . . . . . . . . . . . . . . . . 516 Utilizacin de escenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Creacin de objetos MovieClip con ActionScript. . . . . . . . . . . . . . . . 520 Exportacin de smbolos de biblioteca para ActionScript . . . . . . . 521 Carga de un archivo SWF externo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 Ejemplo: RuntimeAssetsExplorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .525

8

Contenido

Captulo 17: Utilizacin de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 Fundamentos de la utilizacin de texto . . . . . . . . . . . . . . . . . . . . . . . . . 532 Visualizacin de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 Tipos de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 Edicin del contenido de un campo de texto. . . . . . . . . . . . . . . . . . 536 Visualizacin de texto HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 Utilizacin de imgenes en campos de texto . . . . . . . . . . . . . . . . . 537 Desplazamiento de texto en un campo de texto. . . . . . . . . . . . . . . 538 Seleccin y manipulacin de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 Captura de entrada de texto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 Restriccin de la entrada de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 Formato de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 Asignacin de formatos de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 Aplicacin de hojas de estilos en cascada . . . . . . . . . . . . . . . . . . . . 543 Carga de un archivo CSS externo . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 Formato de rangos de texto en un campo de texto . . . . . . . . . . . . 546 Representacin de texto avanzada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 Utilizacin de texto esttico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Ejemplo: Formato de texto de tipo peridico . . . . . . . . . . . . . . . . . . . . .551 Lectura del archivo CSS externo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 Disposicin de los elementos de la noticia en la pgina . . . . . . . . 554 Modificacin del tamao de fuente para ajustar el tamao de un campo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 Divisin del texto en varias columnas . . . . . . . . . . . . . . . . . . . . . . . . 557 Captulo 18: Utilizacin de mapas de bits . . . . . . . . . . . . . . . . . . . 561 Fundamentos de la utilizacin de mapas de bits . . . . . . . . . . . . . . . . . .561 Las clases Bitmap y BitmapData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 Manipulacin de pxeles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 Manipulacin de pxeles individuales. . . . . . . . . . . . . . . . . . . . . . . . . 567 Deteccin de colisiones a nivel de pxeles . . . . . . . . . . . . . . . . . . . . 569 Copia de datos de mapas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 Creacin de texturas con funciones de ruido . . . . . . . . . . . . . . . . . . . . 572 Desplazamiento por mapas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 Ejemplo: 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. . . . . . . . . . . . . . . . . . . . . . . . . 578 Aspectos bsicos del formato Flash Video (FLV). . . . . . . . . . . . . . . . .581 Aspectos bsicos de la clase Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 Carga de archivos de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583

Contenido

9

Control de la reproduccin de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . .584 Deteccin del final de un flujo de vdeo . . . . . . . . . . . . . . . . . . . . . . .585 Transmisin de archivos de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .586 Aspectos bsicos de los puntos de referencia . . . . . . . . . . . . . . . . . . .586 Escritura 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 . . . . . . . . . . . . 592 Establecimiento de la propiedad client del objeto NetStream en this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 Utilizacin de puntos de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 Utilizacin de metadatos de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 Captura de entradas de cmara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 Aspectos bsicos de la clase Camera . . . . . . . . . . . . . . . . . . . . . . . 599 Visualizacin de contenido de cmara en pantalla . . . . . . . . . . . . 599 Diseo de la aplicacin de cmara . . . . . . . . . . . . . . . . . . . . . . . . . . 600 Conexin a la cmara de un usuario . . . . . . . . . . . . . . . . . . . . . . . . . 600 Comprobacin de que las cmaras estn instaladas . . . . . . . . . . . 601 Deteccin de permisos para el acceso a una cmara. . . . . . . . . . 602 Maximizacin de la calidad de vdeo . . . . . . . . . . . . . . . . . . . . . . . . 604 Control de las condiciones de reproduccin. . . . . . . . . . . . . . . . . . 605 Envo de vdeo a un servidor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 Temas avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 Compatibilidad de Flash Player con archivos FLV codificados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 Configuracin de archivos FLV para alojar en el servidor . . . . . . .607 Utilizacin de archivos FLV locales en Macintosh . . . . . . . . . . . . 608 Ejemplo: Jukebox de vdeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608 Captulo 20: Utilizacin de sonido. . . . . . . . . . . . . . . . . . . . . . . . . 615 Fundamentos de la utilizacin de sonido . . . . . . . . . . . . . . . . . . . . . . . . 616 Aspectos bsicos de la arquitectura de sonido. . . . . . . . . . . . . . . . . . . 619 Carga de archivos de sonido externos . . . . . . . . . . . . . . . . . . . . . . . . . 620 Utilizacin de sonidos incorporados . . . . . . . . . . . . . . . . . . . . . . . . . . . .624 Utilizacin de archivos de flujo de sonido . . . . . . . . . . . . . . . . . . . . . . .625 Reproduccin de sonidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .626 Pausa y reanudacin de un sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 Control de la reproduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .628 Detener flujos de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630

10

Contenido

Consideraciones de seguridad al cargar y reproducir sonidos. . . . . 630 Control de desplazamiento y volumen de sonido . . . . . . . . . . . . . . . . .631 Utilizacin de metadatos de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 Acceso a datos de sonido sin formato. . . . . . . . . . . . . . . . . . . . . . . . . . 635 Captura de entradas de sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 Acceso a un micrfono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 Enrutamiento de audio de micrfono a altavoces locales. . . . . . . 640 Alteracin del audio de micrfono . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 Deteccin de actividad del micrfono. . . . . . . . . . . . . . . . . . . . . . . . .641 Intercambio de audio con un servidor multimedia . . . . . . . . . . . . . 642 Ejemplo: Podcast Player. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643 Lectura de datos RSS para un canal podcast. . . . . . . . . . . . . . . . . 644 Simplificacin de la carga y la reproduccin de sonido mediante la clase SoundFacade. . . . . . . . . . . . . . . . . 644 Visualizacin del progreso de reproduccin . . . . . . . . . . . . . . . . . . 648 Pausa y reanudacin de la reproduccin . . . . . . . . . . . . . . . . . . . . . 649 Ampliacin del ejemplo de Podcast Player . . . . . . . . . . . . . . . . . . . 650 Captulo 21: Captura de entradas del usuario. . . . . . . . . . . . . . . . 651 Fundamentos de la captura de entradas del usuario . . . . . . . . . . . . . .651 Captura de entradas de teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 Captura de entradas de ratn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 Ejemplo: WordSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .661 Captulo 22: Redes y comunicacin . . . . . . . . . . . . . . . . . . . . . . 665 Fundamentos de redes y comunicacin . . . . . . . . . . . . . . . . . . . . . . . . 665 Utilizacin de datos externos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 Conexin a otras instancias de Flash Player . . . . . . . . . . . . . . . . . . . . 676 Conexiones de socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 Almacenamiento de datos locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688 Utilizacin de la carga y descarga de archivos . . . . . . . . . . . . . . . . . . .691 Ejemplo: generacin de un cliente Telnet . . . . . . . . . . . . . . . . . . . . . . . 703 Ejemplo: carga y descarga de archivos . . . . . . . . . . . . . . . . . . . . . . . . . 706 Captulo 23: Entorno del sistema del cliente . . . . . . . . . . . . . . . . 715 Fundamentos del entorno del sistema cliente . . . . . . . . . . . . . . . . . . . . 715 Utilizacin de la clase System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 Utilizacin de la clase Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 Utilizacin de la clase ApplicationDomain . . . . . . . . . . . . . . . . . . . . . . 720 Utilizacin de la clase IME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724 Ejemplo: deteccin de las caractersticas del sistema . . . . . . . . . . . . 730

Contenido

11

Captulo 24: Impresin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .735 Fundamentos de la impresin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736 Impresin de una pgina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738 Tareas de Flash Player e impresin del sistema . . . . . . . . . . . . . . . . . .739 Configuracin del tamao, la escala y la orientacin . . . . . . . . . . . . . .742 Ejemplo: impresin de varias pginas. . . . . . . . . . . . . . . . . . . . . . . . . . .745 Ejemplo: ajuste de escala, recorte y respuesta . . . . . . . . . . . . . . . . . . . 747 Captulo 25: Utilizacin de la API externa . . . . . . . . . . . . . . . . . 749 Fundamentos de la utilizacin de la API externa . . . . . . . . . . . . . . . . .750 Requisitos y ventajas de la API externa . . . . . . . . . . . . . . . . . . . . . . . . . 753 Utilizacin de la clase ExternalInterface . . . . . . . . . . . . . . . . . . . . . . . . .755 Obtencin de informacin acerca del contenedor externo . . . . . .755 Llamadas a cdigo externo desde ActionScript . . . . . . . . . . . . . . . 756 Llamadas a cdigo ActionScript desde el contenedor. . . . . . . . . . 757 El formato XML de la API externa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 Ejemplo: utilizacin de la API externa con una pgina Web contenedora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .760 Ejemplo: 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 . . . . . . . . . . 778 Informacin general sobre controles de permisos . . . . . . . . . . . . . . . . 781 Entornos limitados de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .792 Restriccin de las API de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .795 Seguridad del modo de pantalla completa . . . . . . . . . . . . . . . . . . . . . . 797 Carga de contenido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798 Reutilizacin de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 Acceso a medios cargados como datos. . . . . . . . . . . . . . . . . . . . . . . . 806 Carga de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809 Carga de contenido incorporado de archivos SWF importados en un dominio de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812 Utilizacin de contenido heredado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 Configuracin de permisos de LocalConnection . . . . . . . . . . . . . . . . . 814 Control del acceso a scripts en una pgina Web de alojamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814 Objetos compartidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816 Acceso a la cmara, el micrfono, el portapapeles, el ratn y el teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818 ndice alfabtico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819

12

Contenido

Acerca de este manualEste 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

13

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:Captulo En los captulos 1 a 4 se ofrece informacin general sobre la programacin en ActionScript Descripcin 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. Se describen los tipos de datos de nivel superior de ActionScript 3.0 que tambin forman parte de la especificacin del borrador de ECMAScript. 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.

En los captulos 5 a 10 se describen las clases y los tipos de datos bsicos de ActionScript 3.0 En los captulos 11 a 26 se describen las API de Flash Player

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.

14

Acerca de este manual

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:ManualUtilizacin de Flash

DescripcinDescribe la manera de desarrollar aplicaciones Web dinmicas en el entorno de edicin de Flash Describe el uso especfico del lenguaje ActionScript 3.0 y la API principal de Flash Player

Programacin con ActionScript 3.0

Acceso a la documentacin de ActionScript

15

ManualReferencia del lenguaje y componentes ActionScript 3.0

DescripcinProporciona 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. 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 Explica de forma detallada cmo utilizar componentes ActionScript 2.0 para desarrollar aplicaciones Flash Describe cada componente disponible en la versin 2 de la arquitectura de componentes de Adobe, junto con su API Describe los objetos, mtodos y propiedades disponibles en la API de JavaScript. 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 Explica cmo desarrollar aplicaciones de Flash Lite 2.x

Referencia del lenguaje ActionScript 2.0

Utilizacin de componentes ActionScript 2.0

Referencia del lenguaje de componentes ActionScript 2.0 Ampliacin de Flash Introduccin a Flash Lite 2.x

Desarrollo de 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

16

Acerca de este manual

ManualIntroduccin a Flash Lite 1.x

DescripcinProporciona una introduccin a Flash Lite 1.x y describe la manera de probar contenido con el emulador de Adobe Device Central CS3 Describe la manera de desarrollar aplicaciones para dispositivos mviles con Flash Lite 1.x

Desarrollo de aplicaciones de 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

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.

Recursos de aprendizaje de ActionScript

17

18

Acerca de este manual

CAPTULO 1

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

1

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.

19

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.

20

Introduccin a ActionScript 3.0

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.

Novedades de ActionScript 3.0

21

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.

22

Introduccin a ActionScript 3.0

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

Novedades de ActionScript 3.0

23

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.

24

Introduccin a ActionScript 3.0

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.

Compatibilidad con versiones anteriores

25

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 ejecucinFlash Player 7 Puede cargar archivos SWF publicados para Contiene esta AVM Ejecuta archivos SWF escritos en ActionScript 7 y versiones anteriores AVM1 1.0 y 2.0 Flash Player 8 8 y versiones anteriores AVM1 1.0 y 2.0 Flash Player 9 9 y versiones anteriores AVM1 y AVM2 1.0, 2.0 y 3.0

Funcionalidad que ofrece*

Contenido creado enActionScript 1.0 y 2.0 ActionScript 3.0 ActionScript 1.0 y 2.0, y ActionScript 3.0 ActionScript 3.0

Puede cargar contenido y ejecutar cdigo en contenido creado en Puede reutilizar contenido de scripts creado en *

Slo ActionScript 1.0 y 2.0 Slo ActionScript 1.0 y 2.0

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. ActionScript 3.0 a travs de LocalConnection. ActionScript 1.0 y 2.0 a travs de LocalConnection.

26

Introduccin a ActionScript 3.0

CAPTULO 2

Introduccin a ActionScriptEste 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.

2

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.

27

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

28

Introduccin a ActionScript

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

Fundamentos de la programacin

29

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.

30

Introduccin a ActionScript

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.

Utilizacin de objetos

31

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();

32

Introduccin a ActionScript

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.

Utilizacin de objetos

33

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.

34

Introduccin a ActionScript

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);

Utilizacin de objetos

35

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.

36

Introduccin a ActionScript

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.

Utilizacin de objetos

37

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.

38

Introduccin a ActionScript

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.CLICK, gotoAdobeSite);

Creacin de instancias de objetosPor supuesto, antes de poder utilizar un objeto en ActionScript, ste debe existir. Una parte de la creacin de un objeto es la declaracin de una variable; sin embargo, declarar una variable slo crea un espacio vaco en la memoria del equipo. Es necesario asignar un valor real a la variable, es decir, crear un objeto y almacenarlo en la variable, antes de intentar usarla o manipularla. El proceso de creacin de un objeto se denomina creacin de una instancia del objeto, en concreto, de una clase determinada.

Utilizacin de objetos

39

Hay una forma sencilla de crear una instancia de objeto en la que no se utiliza ActionScript en absoluto. En Flash, cuando se coloca un smbolo de clip de pelcula, un smbolo de botn o un campo de texto en el escenario, y se le asigna un nombre de instancia en el inspector de propiedades, Flash declara automticamente una variable con ese nombre de instancia, crea una instancia de objeto y almacena el objeto en la variable. Del mismo modo, en Adobe Flex Builder, cuando se crea un componente en Macromedia MXML de Adobe (codificando una etiqueta MXML o colocando el componente en el editor en modo de diseo) y se le asigna un ID (en