
Flash, el reconocido estándar para la creación de contenidos multimedia en la red, se está utilizando de manera progresiva para desarrollar aplicaciones basadas en Web. ActionScript 2.0 es una gran actualización al lenguaje de scripts o secuencias de comandos de Flash, que mejora de forma radical el desarrollo orientado a objetos mediante la formalización de la sintaxis y la metodología de la Programación orientada a objetos (OOP).
Más allá del uso de esta tecnología, esta obra cubre en detalle aspectos como la tipificación estricta, la selección de tipos, clases, objetos, métodos o propiedades, o la gestión de excepciones, proporcionándole todas las instrucciones necesarias para diseñar y estructurar su código de forma adecuada. Con una orientación eminentemente práctica, ActionScript 2.0 resulta además el aliado perfecto para ajustar y crear la arquitectura de un proyecto orientado a objetos, así como para comprender cómo los componentes de interfaz y las subclases de clip de película encajan en una aplicación de Flash bien estructurada.
Los desarrolladores de ActionScript descubrirán las diferencias en el desarrollo con las versiones 1.0 y 2.0, cómo actualizar el código heredado a ActionScript 2.0 y cómo obtener en definitiva el máximo partido de sus funciones esenciales y sus características OOP. Si es un desarrollador OOP con experiencia que viene de otro lenguaje como Java o C++, le mostrará además cómo adaptar su conocimiento a Flash.



Introducción
Prólogo
Este libro quiere que usted
Qué no es este libro
Quién debería (y no debería) leer este libro
ActionScript 2.0 frente a ActionScript 1.0
Descifrar las versiones de Flash
Archivos de ejemplo
Parte I. El lenguaje ActionScript 2.0
Capítulo 1. Perspectiva general de ActionScript 2.0
Características de ActionScript 2.0
Nuevas características de Flash Player 7
Componentes de la versión 2 en Flash MX 2004
ActionScript 1.0 y 2.0 en Flash Player 6 y 7
Ajustar la versión de ActionScript y del reproductor de una película
Cambios de ActionScript 1.0 en Flash Player 7
La sintaxis con barra inclinada de Flash 4 no es compatible con ActionScript 2.0
¡Comencemos con la OOP!
Capítulo 2. ActionScript orientado a objetos
Programación de procedimiento y programación orientada a objetos
Conceptos clave de la programación orientada a objetos
Sintaxis de clases
Creación de objetos
Uso de objetos
Encapsulación
Tipos de datos
Herencia
Paquetes
Compilación
Comenzar una aplicación orientada a objetos
¿Cómo aplico OOP?
Capítulo 3. Tipos de datos y comprobación de tipos
¿Por qué tipificación estática?
Sintaxis de tipos
Declaración de tipos de datos de variables y propiedades
Declaración del tipo de datos del parámetro de un método y del valorde retorno
¿Por qué sintaxis posterior a los dos puntos?
Tipos compatibles
Manejar cualquier tipo de datos
Compatibilidad con null y undefined
Clases dinámicas incorporadas
Burlar la comprobación de tipos
Creación de parámetros que acepten tipos múltiples
Permitir la creación de propiedades y métodos en las instancias de clase
Evitar la comprobación de tipos en una base por usuario
Seleccionar
Terminología de selección
Compatibilidad de selección en el tiempo de ejecución
La selección no afecta a la selección de métodos o propiedades
Selección frente a conversión
Selección indulgente en el momento de la compilaciónde ActionScript 2.0
Problemas seleccionando a cadena, número, booleano, fecha y matriz
Información de tipo de datos para clases incorporadas
Fallos de comprobación de tipos de ActionScript 2.0
Las variables globales no pueden ser tipificadas
Comprobación de tipos y código de la línea de tiempo
Comprobación de tipos de instancias XML
Ausencia de comprobación de tipos con el operador [ ]
Elementos matriz y comprobación de tipos
A continuación: Creación de clases (¡sus propios tipos de datos!)
Capítulo 4. Clases
Definición de clases
Atributos de clase
El atributo dynamic
El atributo intrinsic
Funciones del constructor (toma 1)
Propiedades
Atributos de propiedad
Restricción del acceso a la propiedad con los atributos private y public
Definir propiedades de clase con el atributo static
Variables globales frente a propiedades de clase
Subclases y propiedades de clase
Expresiones constantes en el momento de la compilación
Enumerar propiedades con bucles for-in
Métodos
Referencia al objeto actual con la palabra clave this
Pasar el objeto actual a un método
Administrar los conflictos de nombres parámetro/propiedad
Uso redundante de la palabra clave this
Atributos de método
Controlar el acceso al método con los atributos public y private
Definir métodos de clase con el atributo static
Métodos accessor
Variables locales
Anidar funciones en métodos
Acceder al objeto actual desde una función anidada en un método
Métodos de obtención y de ajuste
Simular propiedades de sólo lectura
Argumentos extra o desaparecidos
Funciones de constructor (Toma 2)
Simular funciones de constructor múltiples
Usar this en funciones de constructor
Funciones de constructor frente a valores de propiedad por defecto
Completar la clase Box
Poner la teoría en práctica
Capítulo 5. Autoría de una clase de ActionScript 2.0
Comienzo rápido de la autoría de clases
Diseñar la clase ImageViewer
De los requerimientos funcionales al código
Implementación de ImageViewer (Toma 1)
Utilizar ImageViewer en una película
Precargar la clase ImageViewer
Implementación de ImageViewer (toma 2)
ImageViewer (toma 2), resumen del diseño
Implementación de ImageViewer (toma 2)
Utilizar ImageViewer (toma 2)
Implementación de ImageViewer (Toma 3)
Borrar los recursos de clase
El código final de ImageViewer
Volver a la clase
Capítulo 6. Herencias
Un manual sobre la herencia
Método de clase y herencia de propiedad de clase
Subclases como subtipos
Un ejemplo OOP de Chat
Preponderar métodos y propiedades
Preponderar métodos de instancia
Invocar un método de instancia preponderante
Preponderar métodos de clase
Preponderar propiedades
La palabra clave super y el acceso a propiedades preponderadas
Acceso a miembros desde métodos de instancia heredados, preponderados y preponderantes
Acceso a miembros desde un método de instancia heredado
Acceso a miembros desde un método de instancia preponderado
Acceso a miembros desde un método preponderado invocado mediante super
Acceso a miembros desde métodos de clase heredados y preponderados
Buenas prácticas para preponderar
Funciones de constructor en subclases
Invocación superflua del constructor de la superclase en Flash Player 6
Convertir en subclases las clases incorporadas
Clases incorporadas que almacenan librerías de funciones
Aumentar las clases y los objetos incorporados
La teoría de la herencia
¿Por qué herencia?
Polimorfismo y vinculación dinámica
Herencia frente a composición
Es-una, tiene-una y usa-una
Cuándo usar composición sobre herencia
Utilizar la composición para librarse de un viejo hábito
Incompatibilidad con clases abstractas y finales
Probemos las herencias
Capítulo 7. Autoría de una subclase de ActionScript 2.0
Extender las capacidades de ImageViewer
El esqueleto de ImageViewerDeluxe
Añadir los métodos setPosition( ) ysetSize( )
Cambiar automáticamente el tamaño de Image Viewer
Utilizar ImageViewerDeluxe
Seguir adelante sólo
Capítulo 8. Interfaces
El caso para interfaces
Interfaces y clases con tipos de datos múltiples
Sintaxis y uso de interfaces
Convenciones de nombres de interfaces
Herencia de interfaz
Interfaces de indicador
Herencias de tipos múltiples con interfaces
A continuación, paquetes
Capítulo 9. Paquetes
Sintaxis de paquetes
La instrucción import
Importar un paquete completo
Convenciones de nombre de paquete
Definir paquetes
Acceso a paquetes y a la ruta de la clase
Añadir un nuevo directorio a la ruta de clases
Simular paquetes en ActionScript 1.0
Sólo un poco más de teoría
Capítulo 10. Excepciones
El ciclo de gestión de excepciones
Gestionar múltiples tipos de excepciones
Determinar la granularidad del tipo de excepción
Utilizar un único tipo de excepción personalizado
Utilizar mensajes de depuración configurables
Múltiples subclases BoxDimensionException personalizadas
Borboteo de excepciones
Excepciones no atrapadas
El bloque finally
Excepciones anidadas
Un error de excepción anidada
Control de los cambios de flujo en try/catch/actually
Limitaciones de la gestión de excepciones en ActionScript 2.0
Excepciones no comprobadas
Excepciones no incorporadas
Temas de rendimiento de excepciones
Del concepto al código
Parte II. Desarrollo de aplicaciones
Capítulo 11. Un esquema de una aplicación OOP
La estructura básica de directorios
El documento de Flash (archivo .fla)
Las clases
La línea de tiempo del documento
La película de Flash exportada (archivo .swf)
Proyectos en Flash MX Professional 2004
Veámoslo en acción
Capítulo 12. Utilizar componentes con ActionScript 2.0
Perspectiva general de la aplicación de conversión de moneda
Preparar el documento de Flash
Añadir componentes al documento
Iniciar la aplicación
La clase CurrencyConverter
Importar el paquete de componentes
Propiedades de CurrencyConverter
El método main( )
El constructor de clase
Crear la interfaz de usuario
El contenedor de la interfaz
El componente de título Label
El componente Label de instrucciones
El componente de entrada TextInput
El componente ComboBox currencyPicker
El componente botón convertButton
El componente de resultado TextArea
Conversión de moneda basada en la entrada del usuario
Exportar la aplicación final
Gestionar eventos de componentes
Capítulo 13. Subclases MovieClip
La dualidad de las subclases de MovieClip
Avatar: un ejemplo de una subclase de MovieClip
El clip de película AvatarSymbol
La clase Avatar
Unir AvatarSymbol a la clase Avatar
Crear instancias Avatar
Inicializar instancias Avatar
Avatar: la versión de composición
Temas con activos anidados
Propiedades y métodos de valores anidados inicialmente indefinidos
Valores anidados no reconocidos automáticamente por el compilador
Una nota sobre las subclases de MovieClip
Más y más curioso
Capítulo 14. Distribuir bibliotecas de clase
Compartir archivos de fuente de clases
Cargar clases en el tiempo de ejecución
Crear las clases de la biblioteca de clases
Crear el archivo .swf de la biblioteca de clase
Crear la película que carga el archivo .swf de la biblioteca de clases
Crear el archivo XML de exclusión
Pruébela
Compartir clases sin compartir archivos fuente
Tiempo de ejecución frente a momento de compilación
Crear una biblioteca de clases en el momento de la compilación sin fuentes
Crear las clases de la biblioteca de clases
Crear el icono del componente
Crear la clase de componente
Crear el componente
Distribuir el componente a los desarrolladores
Pruébelo
Crear una biblioteca de clases en el tiempo de ejecución sin fuentes
Resolver problemas OOP reales
Parte III. Ejemplos de patrones de diseños en ActionScript 2.0
Capítulo 15. Introducción al diseño de patrones
Haga salir a los patrones
Capítulo 16. El patrón de diseño Observer
Implementar Observer en ActionScript 2.0
Logger: un ejemplo Observer completo
La clase LogMessage
La clase OutputPanelView
La clase TextFieldView
La clase Logger
¿Mal uso de la herencia?
Utilizar la clase Logger
Temas de gestión de memoria con Observer
Más allá de Observer
Capítulo 17. El patrón de diseño Singleton
Implementar Singleton en ActionScript 2.0
El patrón Singleton de la clase Logger
Singleton frente a los métodos de clase y las propiedades de clase
Una advertencia contra los Singleton como globales
A las interfaces de usuario
Capítulo 18. El patrón de diseño Model-View-Controller(Modelo-Vista-Controlador)
La arquitectura general de MVC
La comunicación en MVC
Responsabilidades de clase en MVC
Responsabilidades del modelo
Responsabilidades de la vista
Responsabilidades del controlador
¿Qué crean las clases MVC?
Una implementación generalizada de MVC
La implementación View
La implementación del controlador
Un reloj MVC
La clase ClockModel
La clase ClockUpdate
Las clases ClockAnalogView y ClockDigitalView
La clase ClockTools
La clase ClockController
Reunir todo: La clase Clock
Exploración más lejana
Capítulo 19. El modelo de delegación de eventos
Estructura y participantes
El evento fuente
El objeto evento
El oyente evento
¿Son equivalentes el modelo Observer y el modelo de delegaciónde eventos?
El flujo de la lógica
Implementación del núcleo
La clase EventListenerList
La clase EventObject
La interfaz EventListener
NightSky: Un ejemplo del modelo de delegación de eventos
La fuente de eventos
La subinterfaz EventListener
La subclase EventObject
La clase oyente de eventos
La estructura global
Randomizer, RandomizerListener, y RandomizerEvent
Múltiples tipos de eventos desde una sola fuente de eventos
La clase NightSky
Utilizar NightSky en una aplicación
Otras arquitecturas de eventos en ActionScript
Desde un lugar a cualquier otro lugar
Parte IV. Apéndices
Apéndice A. Referencia rápida de lenguaje de ActionScript 2.0
Propiedades globales
Funciones globales
Clase Accessibility
Constructor
Métodos de clase
Clase Arguments (Extiende matriz)
Propiedades de instancia
Clase Array
Constructor
Propiedades de clase
Propiedades de instancia
Métodos de instancia
Clase Boolean
Constructor
Métodos de instancia
Clase Button
Constructor
Propiedades de instancia
Métodos de instancia
Gestores de eventos
Clase Camera
Constructor
Propiedades de clase
Propiedades de instancia
Métodos de clase
Métodos de instancia
Gestores de eventos
Clase Color
Constructor
Métodos de instancia
Clase ContextMenu
Constructor
Propiedades de instancia
Métodos de instancia
Gestores de eventos
Clase ContextMenuItem
Constructor
Propiedades de instancia
Métodos de instancia
Gestores de eventos
Clase Date
Constructor
Métodos de clase
Métodos de instancia
Clase Function
Constructor
Propiedades de instancia
Métodos de instancia
Clase Key
Constructor
Propiedades de clase
Métodos de clase
Eventos transmitidos a los oyentes
Clase LoadVars
Constructor
Propiedades de instancia
Métodos de instancia
Gestores de eventos
Clase LocalConnection
Constructor
Métodos de instancia
Gestores de eventos
Clase Math
Constructor
Propiedades de clase
Métodos de clase
Clase Microphone
Constructor
Propiedades de clase
Propiedades de instancia
Métodos de clase
Métodos de instancia
Gestores de eventos
Clase Mouse
Constructor
Métodos de clase
Eventos transmitidos a los oyentes
Clase MovieClip
Constructor
Propiedades de instancia
Métodos de instancia
Gestores de eventos
Clase MovieClipLoader
Constructor
Métodos de instancia
Eventos transmitidos a oyentes
Clase NetConnection
Constructor
Propiedades de instancia
Métodos de instancia
Gestores de eventos
Clase NetStream
Constructor
Propiedades de instancia
Métodos de instancia
Gestores de eventos
Clase Number
Constructor
Propiedades de clase
Clase Object
Constructor
Propiedades de clase
Propiedades de instancia
Métodos de clase
Métodos de instancia
Clase PrintJob
Constructor
Propiedades de instancia
Métodos de instancia
Clase Selection
Constructor
Métodos de clase
Transmisiones de eventos a los oyentes
La clase SharedObject
Constructor
Propiedades de instancia
Métodos de clase
Métodos de instancia
Gestores de eventos
Clase Sound
Constructor
Propiedades de instancia
Métodos de instancia
Gestores de eventos
Clase Stage
Constructor
Propiedades de clase
Métodos de clase
Eventos transmitidos a los oyentes
Clase String
Constructor
Propiedades de instancia
Métodos de clase
Métodos de instancia
Clase System
Constructor
Propiedades
Métodos
Clase System.capabilities
Constructor
Propiedades de clase
Clase System.security
Constructor
Métodos de clase
Clase TextField
Constructor
Propiedades de instancia
Métodos de clase
Métodos de instancia
Gestores de eventos
Eventos transmitidos a los oyentes
Clase TextField.StyleSheet
Constructor
Métodos de instancia
Gestores de eventos
Clase TextFormat
Constructor
Propiedades de instancia
Métodos de instancia
Clase TextSnapshot
Constructor
Métodos de instancia
Clase Video
Constructor
Propiedades de instancia
Métodos de instancia
Clase XML
Constructor
Propiedades de instancias
Métodos de instancia
Gestores de eventos
Clase XMLNode
Constructor
Propiedades de instancias
Métodos de instancia
Clase XMLSocket
Constructor
Métodos de instancia
Gestores de eventos
Apéndice B. Diferencias con ECMAScript Edición 4
Índice alfabético
Otros clientes que compraron ActionScript 2.0, también compraron:
Otros libros de Flash MX 2004: