Buscar:

sábado, 18 de diciembre de 2010

Creación de Aplicaciones Con ActionScript 3.0


El proceso de escritura de ActionScript para crear una aplicación implica algo más que el simple conocimiento de la sintaxis y los nombres de las clases que se van a utilizar. Si bien la mayor parte de la información de este manual está enfocada hacia esos dos temas (la sintaxis y la utilización de las clases de ActionScript), también es importante saber qué programas se pueden usar para escribir ActionScript, cómo puede organizarse e incluirse el código ActionScript
en una aplicación y qué pasos hay que seguir para desarrollar una aplicación ActionScript.

Opciones para organizar el código:
Se puede utilizar código ActionScript 3.0 para crear desde sencillas animaciones gráficas hasta complejos sistemas de procesamiento de transacciones cliente-servidor. Dependiendo del tipo de aplicación que se cree, se preferirá usar una o varias de las siguientes formas posibles de incluir código ActionScript en un proyecto.

Almacenamiento de código en fotogramas de una línea de tiempo de Flash
En el entorno de edición de Flash, es posible añadir código ActionScript a cualquier fotograma de una línea de tiempo.
Este código se ejecutará mientras se reproduce la película, cuando la cabeza lectora alcance dicho fotograma.

La colocación del código ActionScript en fotogramas es una forma sencilla de añadir comportamientos a las aplicaciones incorporadas en la herramienta de edición de Flash. Se puede añadir código a cualquier fotograma de la línea de tiempo principal o a cualquier fotograma de la línea de tiempo de cualquier símbolo MovieClip. No obstante, esta flexibilidad tiene un coste. Cuando se crean aplicaciones de mayor tamaño, es fácil perder el rastro de los scripts contenidos en cada fotograma. Con el tiempo, esto puede dificultar el mantenimiento de la aplicación.

Muchos desarrolladores, para simplificar la organización de su código ActionScript en el entorno de edición de Flash, incluyen código únicamente en el primer fotograma de una línea de tiempo o en una capa específica del documento de Flash. De esta forma resulta más sencillo localizar y mantener el código en los archivos FLA de Flash. Sin embargo, para utilizar el mismo código en otro proyecto de Flash, es necesario copiar y pegar el código en el nuevo archivo.

Si desea poder reutilizar el código ActionScript en futuros proyectos de Flash, es recomendable almacenar el código en archivos de ActionScript externos (archivos de texto con la extensión .as).

Almacenamiento de código en archivos de ActionScript:
Si el proyecto contiene una cantidad importante de código ActionScript, la mejor forma de organizar el código es en archivos de código fuente ActionScript independientes (archivos de texto con la extensión .as). Un archivo de ActionScript puede estructurarse de una o dos formas, dependiendo del uso que se le quiera dar en la aplicación.

  • Código ActionScript no estructurado: líneas de código ActionScript, incluidas sentencias o definiciones de funciones, escritas como si se introdujeran directamente en un script de la línea de tiempo, un archivo MXML, etc.

    Para acceder al código ActionScript escrito de este modo, es preciso utilizar la sentencia include en ActionScript o la etiqueta <mx:Script> en Adobe MXML de Flex. La sentencia include de ActionScript hace que el contenido de un archivo de ActionScript externo se inserte en una ubicación específica y en un ámbito determinado de un script, como si se introdujera allí directamente. En el lenguaje MXML de Flex, la etiqueta <mx:Script> permite especificar un atributo de origen que identifica un archivo de ActionScript externo que se cargará en ese punto de la aplicación. Por ejemplo, la siguiente etiqueta cargará un archivo de ActionScript externo denominado Box.as:

    <mx:Script source="Box.as" />
  • Definición de clase de ActionScript: definición de una clase de ActionScript, incluidas sus definiciones de métodos y propiedades.

    Cuando se define una clase, para obtener acceso al código ActionScript de la clase, se puede crear una instancia de la clase y utilizar sus propiedades, métodos y eventos, tal y como se haría con cualquiera de las clases de ActionScript incorporadas. Esto se realiza en dos partes:

    • Utilizar la sentencia import para especificar el nombre completo de la clase, de modo que el compilador de ActionScript sepa dónde encontrarlo. Por ejemplo, si se desea utilizar la clase MovieClip en ActionScript, primero se debe importar esa clase con su nombre completo, incluido el paquete y la clase:

      import flash.display
      .MovieClip;


      Como alternativa, se puede importar el paquete que contiene la clase MovieClip, que equivale a escribir sentencias import independientes para cada clase del paquete:

      import flash.display.*;


      Las únicas excepciones a la regla que dicta que una clase debe importarse si se hace referencia a ella en el código son las clases de nivel superior, que no se definen en un paquete.

      Nota: en Flash, las clases incorporadas (en los paquetes flash.*) se importan automáticamente en los scripts adjuntos a fotogramas de la línea de tiempo. Sin embargo, cuando se escriben clases propias o si se trabaja con los componentes de edición de Flash (los paquetes fl.*) o se trabaja en Flex, será necesario importar de forma explícita cualquier clase para poder escribir código que cree instancias de dicha clase.
    • Escribir código referido específicamente al nombre de clase (normalmente declarando una variable con esa clase como tipo de datos y creando una instancia de la clase para almacenarla en la variable). Al hacer referencia a otro nombre de clase en el código ActionScript, se indica al compilador que cargue la definición de dicha clase. Si se toma como ejemplo una clase externa denominada Box, esta sentencia provoca la creación de una nueva instancia de la clase Box:

      var
      smallBox:Box = new Box(10,20);


      Cuando el compilador se encuentra con la referencia a la clase Box por primera vez, busca el código fuente cargado para localizar la definición de la clase Box.
Selección de la herramienta adecuada:
En función de las necesidades del proyecto y de los recursos disponibles, se puede utilizar una de las herramientas (o varias herramientas conjuntas) para escribir y editar el código ActionScript.

Herramienta de edición de Flash Además de las capacidades de creación de animación y gráficos, Adobe Flash CS4 Professional incluye herramientas para trabajar con código ActionScript, ya sea asociado a los elementos de un archivo FLA como a archivos externos
que sólo contienen código ActionScript. La herramienta de edición de Flash es ideal para los proyectos que contienen una cantidad importante de animación o vídeo, o los proyectos donde el usuario desea crear la mayoría de los activos gráficos, concretamente los proyectos con una mínima interacción del usuario o funcionalidad que requiera ActionScript. Otro motivo para elegir la herramienta de edición de Flash para desarrollar los proyectos de ActionScript es que se prefiera crear activos visuales y escribir código en la misma aplicación. Quizá también se prefiera usar la
herramienta de edición de Flash si se van a utilizar componentes de interfaz de usuario creados previamente, pero las
prioridades básicas del proyecto sean reducir el tamaño de los archivos SWF o facilitar la aplicación de aspectos
visuales.
Adobe Flash CS4 Professional incluye dos herramientas para escribir código ActionScript:

  • Panel Acciones: este panel, disponible cuando se trabaja en un archivo FLA, permite escribir código ActionScript asociado a los fotogramas de una línea de tiempo.
  • Ventana Script: la ventana Script es un editor de texto dedicado para trabajar con archivos de código ActionScript (.as). 
Flex Builder:
Adobe Flex Builder es la principal herramienta para crear proyectos con la arquitectura Flex. Además de sus herramientas de edición de MXML y diseño visual, Flex Builder incluye un editor de ActionScript completo, de modo que puede usarse para crear proyectos de Flex o sólo de ActionScript. Las aplicaciones Flex presentan varias ventajas, como un amplio conjunto de controles de interfaz de usuario predefinidos, controles de diseño dinámicos y flexibles, y mecanismos incorporados para trabajar con orígenes de datos externos y vincular datos externos con elementos de interfaz de usuario. Sin embargo, debido al código adicional necesario para proporcionar estas funciones, las aplicaciones Flex pueden tener un tamaño de archivo SWF más grande y presentan una mayor dificultad que sus equivalentes de Flash a la hora de cambiar completamente los aspectos aplicados.

Se recomienda usar Flex Builder para crear con Flex complejas y completas aplicaciones para Internet basadas en datos, y para editar código ActionScript, editar código MXML y diseñar visualmente la aplicación con una sola herramienta.

Editor de ActionScript de terceros:
Dado que los archivos ActionScript (.as) se almacenan como archivos de texto sencillo, cualquier programa que sea capaz de editar archivos de texto simple se puede usar para escribir archivos ActionScript. Además de los productos ActionScript de Adobe, se han creado varios programas de edición de texto de terceros con funciones específicas de ActionScript. Se pueden escribir archivos MXML o clases de ActionScript con cualquier programa editor de texto. A partir de estos archivos, se puede crear una aplicación SWF (ya sea una aplicación Flex o sólo de ActionScript) con la ayuda del SDK de Flex, que incluye las clases de la arquitectura Flex además del compilador Flex. Como alternativa, muchos desarrolladores utilizan un editor de ActionScript de terceros para escribir las clases de ActionScript y la
herramienta de edición de Flash para crear el contenido gráfico.

El usuario puede optar por utilizar un editor de ActionScript de terceros si:
  • Prefiere escribir código ActionScript en un programa independiente y diseñar los elementos visuales en Flash.
  • Utiliza una aplicación para programar con un lenguaje distinto de ActionScript (por ejemplo, para crear páginas HTML o aplicaciones en otro lenguaje de programación) y desea usar la misma aplicación para el código ActionScript.
  • Desea crear proyectos de Flex o sólo de ActionScript con el SDK de Flex, sin tener que utilizar Flash o Flex Builder.
Entre los editores de código que proporcionan funciones específicas de ActionScript, cabe destacar:

  • Adobe Dreamweaver® CS4
  • ASDT
  • FDT
  • FlashDevelop
  • PrimalScript
  • SE|PY
Proceso de desarrollo de ActionScript:
Independientemente del tamaño del proyecto de ActionScript, la utilización de un proceso para diseñar y desarrollar la aplicación permitirá trabajar con mayor eficacia. En los siguientes pasos se describe un proceso de desarrollo básico para crear una aplicación con ActionScript 3.0:
  1. Diseñe la aplicación.
    Debe describir la aplicación de alguna forma antes de empezar a crearla.
  2. Escriba el código ActionScript 3.0.
    Puede crear código ActionScript con Flash, Flex Builder, Dreamweaver o un editor de texto.
  3. Cree un archivo de aplicación Flash o Flex para ejecutar el código.
    En la herramienta de edición de Flash, esto implica crear un nuevo archivo FLA, establecer la configuración de publicación, añadir componentes de interfaz de usuario a la aplicación y hacer referencia al código ActionScript.
    En el entorno de desarrollo de Flex, la creación de un nuevo archivo de aplicación implica definir la aplicación, añadir componentes de interfaz de usuario con MXML y hacer referencia al código ActionScript.
  4. Publique y pruebe la aplicación ActionScript.
    Esto implica ejecutar la aplicación desde la herramienta de edición de Flash o el entorno de desarrollo de Flex, y comprobar que realiza todo lo previsto.
Debe tenerse en cuenta que estos pasos no tienen por qué seguir este orden necesariamente y que tampoco es necesario finalizar completamente uno de los pasos antes de poder trabajar en otro. Por ejemplo, se puede diseñar una pantalla de la aplicación (paso 1) y luego crear los gráficos, botones y otros elementos (paso 2) antes de escribir el código ActionScript (paso 3) y probarlo (paso 4). O bien, se puede realizar parte del diseño y luego añadir un botón o elemento de interfaz en un momento dado, escribir código ActionScript para cada uno de estos elementos y probarlos. Aunque resulta útil recordar estas cuatro fases del proceso de desarrollo, en una situación real suele ser más eficaz ir pasando de una fase a otra según convenga.

lunes, 13 de diciembre de 2010

Ejemplo: Sitio De Muestras De Animación (Action Script 3.0)


Este ejemplo se ha diseñado para ofrecer una primera oportunidad de consultar cómo se pueden juntar fragmentos de ActionScript para crear una aplicación completa llena de código ActionScript. El ejemplo del sitio de muestras de animación es un ejemplo de cómo se puede partir de una animación lineal (por ejemplo, un trabajo creado para un cliente) y añadir algunos elementos interactivos secundarios adecuados para incorporar la animación en un sitio de
muestras en línea. El comportamiento interactivo que añadiremos a la animación incluirá dos botones en los que el espectador podrá hacer clic: uno para iniciar la animación y otro para navegar a un URL diferente (como el menú del sitio o la página principal del autor).

El proceso de crear este trabajo puede dividirse en las siguientes partes principales:

  1. Preparar el archivo FLA para añadir código ActionScript y elementos interactivos.
  2. Crear y añadir los botones.
  3. Escribir el código ActionScript.
  4. Probar la aplicación.
Preparación de la animación para añadirle interactividad:

Para poder añadir elementos interactivos a la animación, es útil configurar el archivo FLA creando algunos lugares para añadir el contenido nuevo. Esto incluye la creación en el escenario del espacio en el que se colocarán los botones y la creación de "espacio" en el archivo FLA para mantener separados los distintos elementos.

Para preparar el archivo FLA para añadir elementos interactivos:

  1. Si no dispone de una animación lineal a la que añadir interactividad, cree un nuevo archivo FLA con una animación sencilla, como una interpolación de movimiento o de forma individual. Si no, abra el archivo FLA que contiene la animación que va a exhibir en el proyecto y guárdela con un nuevo nombre para crear un nuevo archivo de trabajo.
  2. Decida en qué parte de la pantalla van a aparecer los dos botones (uno para iniciar la animación y otro vinculado al sitio de muestras o a la página principal del autor). Si es necesario, borre o añada espacio en el escenario para el nuevo contenido. Si la animación no incluye una pantalla de bienvenida, puede que desee crear una en el primer fotograma (probablemente tenga que desplazar la animación de forma que empiece en el Fotograma 2 o en un fotograma posterior).
  3. Añada una nueva capa sobre las otras capas de la línea de tiempo y asigne el nombre botones. Ésta será la capa a la que añadirá los botones.
  4. Añada otra capa sobre la capa botones y asígnele el nombre accion. Ésta será la capa en la que añadirá el código ActionScript para la aplicación.
 Crear y añadir botones:
A continuación hay que crear y colocar los botones que forman el centro de la aplicación interactiva.

Para crear y añadir botones al archivo FLA:

  1. Utilice las herramientas de dibujo para crear el aspecto visual del primer botón (el botón "play") en la capa botones.
    Por ejemplo, puede dibujar un óvalo horizontal con texto encima.
  2. Con la herramienta Selección, seleccione todos los elementos gráficos del botón individual.
  3. En el menú principal, elija Modificar > Convertir en símbolo.
  4. En el cuadro de diálogo, elija Botón como tipo de símbolo, asigne un nombre al símbolo y haga clic en Aceptar.
  5. Con el botón seleccionado, asigne al botón el nombre de instancia botonPlay en el inspector de propiedades.
  6. Repita los pasos 1 a 5 para crear el botón que llevará al usuario a la página principal del autor. Asigne a este botón el nombre botonWeb.
Escritura del código:
El código ActionScript para esta aplicación puede dividirse en tres grupos de funcionalidad, aunque se escribirá todo en el mismo lugar. Las tres tareas que el código debe realizar son:

  • Detener la cabeza lectora en cuanto se cargue el archivo SWF (cuando la cabeza lectora llegue al Fotograma 1).
  • Detectar un evento para iniciar la reproducción del archivo SWF cuando el usuario haga clic en el botón play.
  • Detectar un evento para enviar el navegador al URL apropiado cuando el usuario haga clic en el botón vinculado a la página de inicio del autor.
Para crear el código necesario para detener la cabeza lectora cuando llegue al Fotograma 1:
  1. Seleccione el fotograma clave en el Fotograma 1 de la capa actions.
  2. Para abrir el panel Acciones, en el menú principal, elija Ventana > Acciones.
  3. En el panel Script, escriba el código siguiente:
    stop();

Para escribir código para iniciar la animación cuando se haga clic en el botón play:

  1. Al final del código escrito en los pasos anteriores, añada dos líneas vacías.
  2. Escriba el código siguiente al final del script:
    function Iniciar(event:MouseEvent):void
    {
    this.play();
    }
    Este código define una función denominada Iniciar(). Cuando se llama a startMovie(), hace que se inicie la reproducción de la línea de tiempo principal.
  3. En la línea que sigue al código añadido en el paso anterior, escriba esta línea de código:
    botonPlay.addEventListener(MouseEvent.CLICK, Iniciar);

    Esta línea de código registra la función Iniciar() como un detector del evento click de
    botonPlay. Es decir, hace que siempre que se haga clic en el botón botonPlay, se llame a la función Iniciar().


Para escribir código que envíe el navegador a una dirección URL cuando se haga clic en el botón vinculado a la página principal:

  1. Al final del código escrito en los pasos anteriores, añada dos líneas vacías.
  2. Escriba el código siguiente al final del script:
    function IniciarWeb(event:MouseEvent):void
    {
    var targetURL:URLRequest = new URLRequest("http://example.com/");
    navigateToURL(targetURL);
    }

    Este código define una función denominada IniciarWeb(). Esta función crea primero una instancia de URLRequest que representa el URL http://example.com/ y, a continuación, pasa el URL a la función navigateToURL(), lo que hace que el navegador del usuario abra dicho URL.
  3. En la línea que sigue al código añadido en el paso anterior, escriba esta línea de código:

    botonWeb.addEventListener(MouseEvent.CLICK, IniciarWeb);
    Esta línea de código registra la función IniciarWeb() como un detector del evento click de botonWeb. Es decir, hace que siempre que se haga clic en el botón botonWeb, se llame a la función IniciarWeb().
Probar la aplicación:
Al llegar a este punto, la aplicación ya debe ser completamente funcional. Pruébela.

Para probar la aplicación:

  1. En el menú principal, elija Control > Probar película. Flash crea el archivo SWF y lo abre en una ventana de Flash Player.
  2.  Pruebe ambos botones para asegurarse de que funcionan correctamente.
     
  3. Si los botones no funcionan, puede comprobar lo siguiente:

    • ¿Tienen los botones nombres de instancia distintos?
    • ¿Las llamadas al método addEventListener() utilizan los mismos nombres que los nombres de instancia de los botones?
    • ¿Se utilizan los nombres de evento correctos en las llamadas al método addEventListener()?
    • ¿Se ha especificado el parámetro correcto para cada una de las funciones? (Ambos deben tener un solo parámetro con el tipo de datos MouseEvent.)
    Estos errores, y otros errores posibles, deben producir un mensaje de error cuando se elija el comando Probar película o cuando se haga clic en el botón. Vea si hay errores de compilador en el panel Errores del compilador (los que se producen al elegir Probar película) y si hay errores de tiempo de ejecución en el panel Salida (errores que se producen durante la reproducción del archivo SWF, como al hacer clic en un botón).

martes, 30 de noviembre de 2010

Elementos Comunes de los Programas (Action Script 3.0)


Además de la declaración de variables, la creación de instancias de objetos y la manipulación de objetos mediante sus propiedades y métodos, hay otros bloques de creación que se pueden usar para crear un programa de ActionScript.

Operadores:
Los operadores son símbolos especiales (o, en ocasiones, palabras) que se utilizan para realizar cálculos. Se utilizan principalmente en las operaciones matemáticas, pero también en la comparación entre valores. Por lo general, un operador utiliza uno o varios valores, y calcula un solo resultado. Por ejemplo:

  • El operador de suma (+) suma dos valores y obtiene como resultado una sola cifra:
    var sum:Number = 23 + 32;
  • El operador de multiplicación (*) multiplica un valor por otro y obtiene como resultado una sola cifra:
    var energia:Number = masa * VelocidadLuz * VelocidadLuz;
  • El operador de igualdad (==) compara dos valores para ver si son iguales y obtiene como resultado un solo valor booleano (true o false):
    if (día == "Miercoles")
    {
    SacarLaBasura();
    }
Como se muestra aquí, el operador de igualdad y los otros operadores de comparación se suelen utilizar con la sentencia if para determinar si determinadas instrucciones deben llevarse a cabo o no.

Comentarios:
Mientras se escribe código ActionScript, a menudo se desea dejar notas para uno mismo, quizás para explicar el funcionamiento de algunas líneas de código o el motivo de una determinada elección. Los comentarios del código son una herramienta que permite escribir en el código texto que el ordenador debe ignorar. ActionScript incluye dos tipos de comentarios:

  • Comentario de una sola línea: un comentario de una sola línea se indica mediante dos barras diagonales en cualquier lugar de una línea. El ordenador omitirá el texto entre las dos barras y el final de la línea:

    // Este es un comentario, es ignorado por el equipo.
    var edad:Number = 10; // Fijar la edad a 10 de forma predeterminada.
  • Comentario multilínea: un comentario multilínea contiene un marcador de inicio del comentario (/*), el contenido del comentario y un marcador de fin del comentario (*/). Todo el texto entre los marcadores de inicio y de fin será omitido por el ordenador, independientemente del número de líneas que ocupe el comentario:

    /*
    Esto podría ser una descripción muy larga, quizás describiendo una función particular, explicar una sección de código.En cualquier caso, estas líneas son ignoradas por el equipo.
    */
Los comentarios también se utilizan con frecuencia para "desactivar" una o varias líneas de código. Por ejemplo, si se está probando una forma distinta de llevar a cabo algo o se está intentando saber por qué determinado código ActionScript no funciona del modo esperado.

Control de flujo:
En un programa, muchas veces se desea repetir determinadas acciones, realizar sólo algunas acciones y no otras, o realizar acciones alternativas en función de determinadas condiciones, etc. El control de flujo es el control sobre el cual se llevan a cabo las funciones. Hay varios tipos de elementos de control de flujo disponibles en ActionScript.

  • Funciones: las funciones son como los métodos abreviados; proporcionan un modo de agrupar una serie de acciones bajo un solo nombre y pueden utilizarse para realizar cálculos. Las funciones son especialmente importantes en la gestión de eventos, pero también se utilizan como una herramienta general para agrupar una serie de instrucciones.
  • Bucles: las estructuras de bucle permiten designar una serie de instrucciones que el equipo realizará un número definido de veces o hasta que cambie alguna condición. A menudo los bucles se utilizan para manipular varios elementos relacionados, mediante una variable cuyo valor cambia cada vez que el ordenador recorre el bucle.
  • Sentencias condicionales: las sentencias condicionales proporcionan un modo de designar determinadas instrucciones que sólo se llevan a cabo bajo circunstancias concretas o de ofrecer conjuntos alternativos de instrucciones para condiciones distintas. El tipo más común de sentencia condicional es la sentencia if. La sentencia if comprueba un valor o una expresión escrita entre paréntesis. Si el valor es true, se ejecutan las líneas de código entre llaves; de lo contrario, se omiten. Por ejemplo:

    if (age < 20)
    {
    // mostrar el contenido especial (adolescentes orientados
    )
    }


    La pareja de la sentencia if, la sentencia else, permite designar instrucciones alternativas que se llevarán a cabo si la condición no es true:

    if (username == "admin")
    {
    // hacer cosas si es administrador, como mostrar opciones adicionales.

    }
    else
    {
    // hacer algunas cosas si no son administradores.

martes, 2 de noviembre de 2010

Trabajo con Objetos (Action Script 3.0)


 

ActionScript es lo que se denomina un lenguaje de programación orientado a objetos. La programación orientada a objetos es simplemente un enfoque de la programación, es decir, una forma de organizar el código en un programa mediante objetos.

Anteriormente se ha definido un programa informático como una serie de pasos o instrucciones que lleva a cabo el equipo. Así pues, conceptualmente se podría imaginar un programa informático simplemente como una larga lista de instrucciones. Sin embargo, en la programación orientada a objetos, las instrucciones del programa se dividen entre distintos objetos; el código se agrupa en segmentos de funcionalidad, de modo que los tipos de funcionalidad relacionados o los elementos de información relacionados se agrupan en un contenedor.

De hecho, si se ha trabajado con símbolos en Flash, se estará acostumbrado a trabajar con objetos. Supongamos que se ha definido un símbolo de clip de película (por ejemplo, el dibujo de un rectángulo) y se ha colocado una copia del mismo en el escenario. Dicho símbolo de clip de película también es (literalmente) un objeto en ActionScript; es una instancia de la clase MovieClip.

Es posible modificar algunas de las características del clip de película. 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 más cambios, como utilizar la herramienta Transformación libre para girar el rectángulo. Todas estas acciones para modificar un símbolo de clip de película en el entorno de edición de Flash también se pueden realizar en ActionScript cambiando los elementos de datos que se agrupan en un único paquete denominado objeto MovieClip.

En la programación orientada a objetos de ActionScript, hay tres tipos de características que puede contener cualquier clase:
  • Propiedades
  • Métodos
  • 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.

Propiedades
Una propiedad representa uno de los elementos de datos que se empaquetan en un objeto. Un objeto Song (canción) puede tener propiedades denominadas artist (artista) y title (título); la clase MovieClip tiene propiedades como rotation (rotación), x, width (anchura) y alpha (alfa). Se trabaja con las propiedades del mismo modo que con las variables individuales; de hecho, se podría pensar que las propiedades son simplemente las variables "secundarias" contenidas en un objeto.

A continuación se muestran algunos ejemplos de código ActionScript que utiliza propiedades. Esta línea de código mueve el objeto MovieClip denominado square a la coordenada x = 100 píxeles:

square.x = 100;

Este código utiliza la propiedad rotation para que el MovieClip square gire de forma correspondiente a la rotación del MovieClip triangle:

square.rotation = triangle.rotation;

Este código altera la escala horizontal del MovieClip square para hacerlo 1,5 veces más ancho:

square.scaleX = 1.5;

Fíjese en la estructura común: se utiliza una variable (square, triangle) como nombre del objeto, seguida de un punto (.) y, a continuación, el 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.

Métodos
Un método es una acción que puede llevar a cabo un objeto. Por ejemplo, si se ha creado un símbolo de clip de película en Flash con varios fotogramas clave y animación en la línea de tiempo, ese clip de película podrá reproducirse, detenerse o recibir instrucciones para mover la cabeza lectora a un determinado fotograma.

Este código indica al objeto MovieClip denominado shortFilm que inicie su reproducción:

shortFilm.play();

Esta línea hace que el MovieClip denominado shortFilm deje de reproducirse (la cabeza lectora se detiene como si se hiciera una pausa en un vídeo):

shortFilm.stop();

Este código hace que un MovieClip denominado shortFilm mueva su cabeza lectora al fotograma 1 y deje de reproducirse (como si se rebobinara un vídeo):

shortFilm.gotoAndStop(1);

Como puede verse, para acceder a los métodos, se debe escribir el nombre del objeto (una variable), un punto y el nombre del método seguido de un paréntesis, siguiendo la misma estructura que para las propiedades. El paréntesis es una forma de indicar que se está llamando al método, es decir, indicando al objeto que realice esa acción. Algunos valores (o variables) se incluyen dentro del paréntesis para pasar información adicional necesaria para llevar a cabo la acción. Estos valores se denominan parámetros del método.

Por ejemplo, el método gotoAndStop() necesita saber cuál es el fotograma al que debe dirigirse, de modo que requiere un solo parámetro en el paréntesis. Otros métodos como play() y stop() no requieren información adicional porque son descriptivos por sí mismos. Sin embargo, también se escriben con paréntesis.
A diferencia de las propiedades (y las variables), los métodos no se usan como identificadores de valores. No obstante, algunos métodos pueden realizar cálculos y devolver un resultado que puede usarse como una variable.
Por ejemplo, el método toString() de la clase Number convierte el valor numérico en su representación de texto:

var numericData:Number = 9;
var textData:String = numericData.toString();

Por ejemplo, se usaría el método 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 sólo puede contener valores de texto. Esta línea de código
convierte en texto el valor numérico de la variable numericData y, a continuación, hace que aparezca en la pantalla en el objeto TextField denominado calculatorDisplay:

calculatorDisplay.text = numericData.toString();

Eventos
Se ha descrito un programa informático como una serie de instrucciones que el ordenador lleva a cabo paso a paso.
Algunos programas informáticos sencillos no son más que eso: unos cuantos pasos que el ordenador ejecuta, tras los cuales finaliza el programa. Sin embargo, los programas de ActionScript se han diseñado para continuar ejecutándose, 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 cuándo las realiza.
Básicamente, los eventos son acciones que ActionScript conoce y a las que puede responder. Muchos eventos se relacionan con la interacción del usuario (hacer clic en un botón, presionar una tecla del teclado, etc.) pero también existen otros tipos de eventos. Por ejemplo, si se usa ActionScript para cargar una imagen externa, existe un evento que puede indicar al usuario cuándo finaliza la carga de la imagen. En esencia, cuando se ejecuta un programa de ActionScript, Adobe Flash Player y Adobe AIR simplemente esperan a que ocurran determinadas acciones y, cuando suceden, ejecutan el código ActionScript que se haya especificado para tales eventos.


1. Gestión básica de eventos: La técnica para especificar determinadas acciones que deben realizarse como respuesta a eventos concretos se denomina gestión de eventos. Cuando se escribe código ActionScript para llevar a cabo la gestión de eventos, se deben
identificar tres elementos importantes:

  • El origen del evento: ¿en qué objeto va a repercutir el evento?
    Por ejemplo, ¿en qué botón se hará clic o qué objeto Loader está cargando la imagen? El origen del evento también se denomina objetivo del evento, ya que es el objeto al que Flash Player o AIR destinan el evento (es decir, donde éste tiene lugar realmente).
  • 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 código ActionScript para gestionar eventos, el código debe incluir estos tres elementos y debe seguir esta estructura básica (los elementos en negrita son marcadores de posición que hay que completar en cada caso concreto):

function eventResponse(eventObject:EventType):void
{
// Las acciones realizadas en respuesta al evento clic aquí
.
}


eventSource.addEventListener(EventType.EVENT_NAME, eventResponse);

Este código realiza dos acciones. En primer lugar, define una función, que es la forma de especificar las acciones que desean realizarse como respuesta al evento. A continuación, llama al método addEventListener() del objeto de origen, básicamente "suscribiendo" la función al evento especificado de modo que se lleven a cabo las acciones de la función cuando ocurra el evento. Cada una de estas partes se tratará con mayor detalle.

Una función proporciona un modo de agrupar acciones con un único nombre que viene a ser un nombre de método abreviado para llevar a cabo las acciones. Una función es idéntica a un método excepto en que no está necesariamente asociada a una clase determinada (de hecho, es posible definir un método como una función asociada a una clase determinada). Cuando se crea una función para la gestión de eventos, se debe elegir el nombre de la función (denominada eventResponse en este caso). Además, se debe especificar un parámetro (denominado eventObject en este ejemplo). Especificar un parámetro de una función equivale a declarar una variable, de modo que también hay que indicar el tipo de datos del parámetro. (En este ejemplo, el tipo de datos del parámetro es EventType.)
Cada tipo de evento que se desee detectar tiene asociada una clase de ActionScript. El tipo de datos especificado para el parámetro de función es siempre la clase asociada del evento concreto al que se desea responder. Por ejemplo, un evento click (el cual se activa al hacer clic en un elemento con el ratón) se asocia a la clase MouseEvent. Cuando se vaya a escribir una función de detector para un evento click, ésta se debe definir con un parámetro con el tipo de
datos MouseEvent. Por último, entre las llaves de apertura y cierre ({ ... }), se escriben las instrucciones que debe llevar a cabo el equipo cuando ocurra el evento.
Después de escribir la función de gestión de eventos, es necesario indicar al objeto de origen del evento (el objeto en el que se produce el evento, por ejemplo, el botón) que se desea llamar a la función cuando ocurra el evento. Para ello es necesario llamar al método addEventListener() de dicho objeto (todos los objetos que tienen eventos también
tienen un método addEventListener()). El método addEventListener() utiliza dos parámetros:
  • En primer lugar, el nombre del evento específico al que se desea responder. De nuevo, cada evento se asocia a una clase específica, que tiene a su vez un valor especial predefinido para cada evento (como un nombre exclusivopropio del evento), que debe usarse como primer parámetro.
  • En segundo lugar, el nombre de la función de respuesta al evento. Hay que tener en cuenta que el nombre de una función debe escribirse sin paréntesis cuando se pasa como un parámetro.

2. Análisis del proceso de gestión de eventos: A continuación se ofrece una descripción paso a paso del proceso que tiene lugar cuando se crea un detector de eventos. En este caso, es un ejemplo de creación de función de detector a la que se llama cuando se hace clic en un
objeto denominado myButton.

El código escrito por el programador es el siguiente:

function eventResponse(event:MouseEvent):void
{
// Ación a cumplir.
}


myButton.addEventListener(MouseEvent.CLICK, eventResponse);


Al ejecutarse en Flash Player, el código funcionaría de la manera siguiente. (El comportamiento es idéntico en Adobe AIR):

2.1. Cuando se carga el archivo SWF, Flash Player detecta que existe una función denominada eventResponse().
2.2. A continuación, Flash Player ejecuta el código (específicamente, las líneas de código que no están en una función).
En este caso se trata de una sola línea de código: para llamar al método addEventListener() en el objeto de origen del evento (denominado myButton) y pasar la función eventResponse como parámetro.


a.- Internamente, myButton tiene una lista de funciones que detecta cada uno de sus eventos, por lo que cuando se llama a su método addEventListener(), myButton almacena la función eventResponse() en su lista de detectores de eventos.
2.3. Cuando el usuario hace clic en el objeto myButton, se activa el evento click (identificado como MouseEvent.CLICK en el código).
En este punto ocurre lo siguiente:

a.- Flash Player crea un objeto, una instancia de la clase asociada con el evento en cuestión (MouseEvent en este ejemplo). Para muchos eventos esto será una instancia de la clase Event, para eventos del ratón será una instancia de MouseEvent y para otros eventos será una instancia de la clase asociada con el evento. Este objeto creado se conoce como el objeto de evento y contiene información específica sobre el evento que se ha producido: el tipo de evento, el momento en que ha ocurrido y otros datos relacionados con el evento, si procede.
b.- A continuación, Flash Player busca en la lista de detectores de eventos almacenada en myButton. Recorre estas funciones de una en una, llamando a cada función y pasando el objeto de evento a la función como parámetro.
Como la función eventResponse() es uno de los detectores de myButton, como parte de este proceso Flash Player llama a la función eventResponse().
c.- Cuando se llama a la función eventResponse(), se ejecuta el código de la función para realizar las acciones especificadas.
3. Ejemplos de gestión de eventos: A continuación se ofrecen más 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 código de gestión de eventos:

  • Hacer clic en un botón para iniciar la reproducción del clip de película actual. En el siguiente ejemplo, playButton es el nombre de instancia del botón 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 si se ha escrito algo en un campo de texto. En este ejemplo, entryText es un campo de introducción de texto y outputText es un campo de texto dinámico:

    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 botón para navegar a un URL. En este caso, linkButton es el nombre de instancia del botón:

    function gotoAdobeSite(event:MouseEvent):void
    {
    var adobeURL:URLRequest = new URLRequest("http://www.adobe.com/");
    navigateToURL(adobeURL);
    }
    linkButton.addEventListener(MouseEvent.CLICK, gotoAdobeSite);
Creación de instancias de objetos
Por supuesto, antes de poder utilizar un objeto en ActionScript, éste debe existir. Una parte de la creación de un objeto es la declaración de una variable; sin embargo, declarar una variable sólo crea un espacio vacío 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 creación de un objeto se denomina creación de una instancia del objeto, en concreto, de una clase determinada.

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 símbolo de clip de película, un símbolo de botón o un campo de texto en el escenario, y se le asigna un nombre de instancia en el inspector de propiedades, Flash declara automáticamente 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 MXML (codificando una etiqueta MXML o colocando el componente en el editor en modo de diseño) y se le asigna un ID (en el formato MXML o en la vista Propiedades de Flex), ese ID se convierte en el nombre de una variable de ActionScript y se crea una instancia del componente, que se almacena en la variable.
Sin embargo, no siempre se desea crear un objeto visualmente. Hay varias formas de crear instancias de objetos utilizando exclusivamente ActionScript. En primer lugar, con varios tipos de datos de ActionScript, es posible crear una instancia con una expresión literal, es decir, un valor escrito directamente en el código ActionScript. A continuación se muestran algunos ejemplos:

  • Valor numérico literal (introducir el número directamente):
    var someNumber:Number = 17.239;
    var someNegativeInteger:int = -53;
    var someUint:uint = 22;
  • Valor de cadena literal (poner el texto entre comillas dobles):
    var firstName:String = "George";
    var soliloquy:String = "To be or not to be, that is the question...";
  • Valor booleano literal (usar los valores literales true o false):
    var niceWeather:Boolean = true;
    var playingOutside:Boolean = false;
  • Valor de conjunto literal (cerrar entre corchetes una lista de valores separados por coma):
    var seasons:Array = ["spring", "summer", "autumn", "winter"];
  • Valor XML literal (introducir los datos XML directamente):
    var employee:XML = <employee>
         <firstName>Harold</firstName>
         <lastName>Webster</lastName>
    </employee>;
ActionScript también define expresiones literales para los tipos de datos Array, RegExp, Object y Function.
En los demás tipos de datos, para crear una instancia de objeto, se utiliza el operador new con el nombre de clase, como en el siguiente ejemplo:

var raceCar:MovieClip = new MovieClip();
var birthday:Date = new Date(2006, 7, 9);


A menudo se hace referencia a la creación de un objeto con el operador new como "llamar al constructor de la clase".
Un constructor es un método especial al que se llama como parte del proceso de creación de una instancia de una clase.
Debe tenerse en cuenta que, cuando se crea una instancia de este modo, se ponen paréntesis después del nombre de la clase y en ocasiones se especifican los valores del parámetro, dos cosas que también se realizan cuando se llama a un método.
Tenga en cuenta que, incluso en los tipos de datos que permiten crear instancias con una expresión literal, se puede utilizar el operador new para crear una instancia de objeto. Por ejemplo, las siguientes dos líneas de código realizan exactamente lo mismo:

var someNumber:Number = 6.33;
var someNumber:Number = new Number(6.33);


Es importante familiarizarse con la creación de objetos mediante new ClassName(). Si se necesita crear una instancia de cualquier tipo de datos de ActionScript que no tenga una representación visual (y que, por lo tanto, no pueda crearse colocando un elemento en el escenario de Flash o el modo de diseño del editor MXML de Flex Builder), sólo puede
hacerse creando el objeto directamente en ActionScript con el operador new.
En Flash concretamente, el operador new también se puede usar para crear una instancia de un símbolo de clip de película que esté definido en la biblioteca pero no esté colocado en el escenario.


Saludos de su amigo: -иαяυтσ-

Fundamentos de Programación (Action Script 3.0)


Dado que ActionScript es un lenguaje de programación, será de gran ayuda comprender primero algunos conceptosgenerales de programación de ordenadores.



Para qué sirven los programas informáticos
En primer lugar, resulta útil entender qué es un programa informático y para qué sirve. Un programa informático se caracteriza por dos aspectos principales:

  •  Un programa es una serie de instrucciones o pasos que debe llevar a cabo el equipo.
  • Cada paso implica en última instancia la manipulación de información o datos.
En general, un programa informático es simplemente una lista de instrucciones paso a paso que se dan al equipo para que las lleve a cabo una a una. Cada una de las instrucciones se denomina sentencia. Como se verá a lo largo de este manual, en ActionScript cada sentencia finaliza con un punto y coma.

Lo que realiza básicamente una instrucción dada en un programa es manipular algún bit de datos almacenado en la memoria del equipo. En un caso sencillo, se puede indicar al equipo que sume dos números y almacene el resultado en su memoria. En un caso más complejo, se podría tener un rectángulo dibujado en la pantalla y escribir un programa para moverlo a algún otro lugar de la pantalla. El equipo realiza un seguimiento de determinada información relativa al rectángulo: las coordenadas x e y que indican su ubicación, la anchura y altura, el color, etc. Cada uno de estos bits de información se almacena en algún lugar de la memoria del equipo. Un programa para mover el rectángulo a otra ubicación incluiría pasos como "cambiar la coordenada x a 200; cambiar la coordenada y a 150" (especificando nuevos valores para las coordenadas x e y). Por supuesto, el equipo procesa estos datos de algún modo para convertir estos números en la imagen que aparece en la pantalla; pero para el nivel de detalle que aquí interesa, basta con saber que el proceso de "mover un rectángulo en la pantalla" sólo implica en realidad un cambio de bits de datos en la memoria del equipo.


Variables y constantesDado que la programación implica principalmente cambiar datos en la memoria del equipo, tiene que haber una forma de representar un solo dato en el programa. Una variable es un nombre que representa un valor en la memoria del equipo. Cuando se escriben sentencias para manipular valores, se escribe el nombre de la variable en lugar del valor; cuando el equipo ve el nombre de la variable en el programa, busca en su memoria y utiliza el valor que allí encuentra.

Por ejemplo, si hay dos variables denominadas value1 y value2, cada una de las cuales contiene un número, para sumar esos dos números se podría escribir la sentencia:


value1 + value2


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



En ActionScript 3.0, una variable se compone realmente de tres partes distintas:
  •  El nombre de la variable
  •  El tipo de datos que puede almacenarse en la variable
  •  El valor real almacenado en la memoria del equipo
Se acaba de explicar cómo el equipo utiliza el nombre como marcador de posición del valor. El tipo de datos también es importante. Cuando se crea una variable en ActionScript, se especifica el tipo concreto de datos que contendrá; a partir de ahí, las instrucciones del programa sólo pueden almacenar ese tipo de datos en la variable y se puede manipular el valor con las características particulares asociadas a su tipo de datos. 
En ActionScript, para crear una variable (se conoce como declarar la variable), se utiliza la sentencia var:

var value1:Number;


En este caso, se ha indicado al equipo que cree una variable denominada value1, que contendrá únicamente datos numéricos ("Number" es un tipo de datos específico definido en ActionScript). También es posible almacenar un valor directamente en la variable:
 

var value2:Number = 17;
 

En Adobe Flash CS4 Professional hay otra forma posible de declarar una variable. Cuando se coloca un símbolo de clip de película, un símbolo de botón o un campo de texto en el escenario, se le puede asignar un nombre de instancia en el inspector de propiedades. En segundo plano, Flash crea una variable con el mismo nombre que la instancia, que se puede utilizar en el código ActionScript para hacer referencia a ese elemento del escenario. Así, por ejemplo, si hay un símbolo de clip de película en el escenario y se le asigna el nombre de instancia rocketShip, siempre que se use la variable rocketShip en el código ActionScript, se estará manipulando dicho clip de película.

Una constante es muy similar a una variable en el sentido de que es un nombre que representa a un valor en la memoria del equipo, con un tipo de datos específico. La diferencia es que a una constante sólo se le puede asignar un valor cada vez en el curso de una aplicación ActionScript. Tras asignar un valor a una constante, éste permanecerá invariable en toda la aplicación. La sintaxis para declarar constantes coincide con la de las variables, excepto por el hecho de que se usa la palabra clave const en lugar de var:


const SALES_TAX_RATE:Number = 0.07;


Una constante resulta útil para definir un valor que se utilizará en varios puntos de un proyecto y que no cambiará en circunstancias normales. Cuando se utiliza una constante en lugar de un valor literal el código resulta más legible. 


Por ejemplo, es más fácil entender la finalidad de una línea de código que multiplica un precio por SALES_TAX_RATE que la de una línea de código que lo haga por 0.07. Además, si en un momento dado es preciso cambiar el valor definido por una constante, sólo habrá que hacerlo en un punto (la declaración de la constante) cuando se utiliza una constante para su representación en el proyecto, en lugar de tener que modificarlo varias veces como cuando se utilizan valores literales especificados en el código.

Tipos de datos
En ActionScript, hay muchos tipos de datos que pueden utilizarse como el tipo de datos de las variables que se crean.

Algunos de estos tipos de datos se pueden considerar "sencillos" o "fundamentales":

  • String: un valor de texto como, por ejemplo, un nombre o el texto de un capítulo de un libro.
  • Numeric: ActionScript 3.0 incluye tres tipos de datos específicos para datos numéricos:
    • Number: cualquier valor numérico, incluidos los valores fraccionarios o no fraccionarios.
    • int: un entero (un número no fraccionario).
    • uint: un entero sin signo, es decir, que no puede ser negativo.
  • Boolean: un valor true (verdadero) o false (falso), por ejemplo, si un conmutador está activado o si dos valores son iguales.
El tipo de datos sencillo representa a un solo elemento de información: por ejemplo, un único número o una sola secuencia de texto. No obstante, la mayoría de los tipos de datos definidos en ActionScript podrían describirse como tipos de datos complejos porque representan un conjunto de valores agrupados. Por ejemplo, una variable con el tipo de datos Date representa un solo valor: un momento temporal. No obstante, ese valor de fecha se representa en realidad en forma de diferentes valores: el día, el mes, el año, las horas, los minutos, los segundos, etc., los cuales son números individuales. Así pues, aunque se perciba una fecha como un solo valor (y se pueda tratar como tal creando una variable Date), internamente el equipo lo considera un grupo de varios valores que conjuntamente definen una sola fecha.
La mayoría de los tipos de datos incorporados y los tipos de datos definidos por los programadores son complejos.
Algunos de los tipos de datos complejos que podrían reconocerse son:

  • MovieClip: un símbolo de clip de película.
  • TextField: un campo de texto dinámico o de texto de entrada.
  • SimpleButton: un símbolo de botón.
  • Date: información sobre un solo momento temporal (una fecha y hora).
Para referirse a los tipos de datos, a menudo se emplean como sinónimos las palabras clase y objeto. Una clase es simplemente la definición de un tipo de datos — es una especie de plantilla para todos los objetos del tipo de datos, como afirmar que "todas las variables del tipo de datos Example tiene estas características: A, B y C". Un objeto, por otra parte, es una instancia real de una clase; una variable cuyo tipo de datos sea MovieClip se podría describir como un objeto MovieClip. Se puede decir lo mismo con distintos enunciados:

  • El tipo de datos de la variable myVariable es Number.
  • La variable myVariable es una instancia de Number.
  • La variable myVariable es un objeto Number.
  • La variable myVariable es una instancia de la clase Number

viernes, 22 de octubre de 2010

Programación Adobe® Flash® (CS4)

Programación en Adobe Flash CS4
Animaciones y ejemplos de programación en Action Script 3.0

INTRODUCCION:
ActionScript es el lenguaje de programación para los entornos de tiempo de ejecución de Adobe® Flash® Player y Adobe® AIR™. 

Entre otras muchas cosas, activa la interactividad y la gestión de datos en el contenido y las aplicaciones
de Flash, Flex y AIR.
ActionScript se ejecuta mediante la máquina virtual ActionScript (AVM), que forma parte de Flash Player y AIR. 

El código de ActionScript se suele compilar en un formato de código de bytes (un tipo de lenguaje que los ordenadores
pueden escribir y comprender) mediante un compilador, como el incorporado en Adobe® Flash® CS4 Professional o Adobe® Flex™ Builder™ o el que está disponible en el SDK de Adobe® Flex™.

El código de bytes está incorporado en los archivos SWF ejecutados por Flash Player y AIR.
ActionScript 3.0 ofrece un modelo de programación robusto que resultará familiar a los desarrolladores con conocimientos básicos sobre programación orientada a objetos. 

Algunas de las principales funciones de ActionScript 3.0 que mejoran las versiones anteriores son:


  •  Una nueva máquina virtual de ActionScript, denominada AVM2, que utiliza un nuevo conjunto de instrucciones de código de bytes y proporciona importantes mejoras de rendimiento.
  •  Una base de código de compilador más moderna que realiza mejores optimizaciones que las versiones anteriores del compilador.
  •  Una interfaz de programación de aplicaciones (API) ampliada y mejorada, con un control de bajo nivel de los objetos y un auténtico modelo orientado a objetos.
  •  Una API XML basada en la especificación de ECMAScript para XML (E4X) (ECMA-357 edición 2). E4X es una extensión del lenguaje ECMAScript que añade XML como un tipo de datos nativo del lenguaje.
  •  Un modelo de eventos basado en la especificación de eventos DOM (modelo de objetos de documento) de nivel 3.


Ventajas de ActionScript 3.0 :
ActionScript 3.0 aumenta las posibilidades de creación de scripts de las versiones anteriores de ActionScript.
Se ha diseñado para facilitar la creación de aplicaciones muy complejas con conjuntos de datos voluminosos y bases de código reutilizables y orientadas a objetos.
Aunque no se requiere para el contenido que se ejecuta en Adobe Flash Player, ActionScript 3.0 permite introducir unas mejoras de rendimiento que sólo están disponibles con AVM2, la
nueva máquina virtual.
El código ActionScript 3.0 puede ejecutarse con una velocidad diez veces mayor que el código ActionScript heredado.

La versión anterior de la máquina virtual ActionScript (AVM1) ejecuta código ActionScript 1.0 y ActionScript 2.0.
Flash Player 9 y 10 admiten AVM9 por compatibilidad con contenido existente y heredado de versiones anteriores.



Novedades de ActionScript 3.0Aunque ActionScript 3.0 contiene muchas clases y funciones que resultarán familiares a los programadores de ActionScript, la arquitectura y los conceptos de ActionScript 3.0 difieren de las versiones anteriores de ActionScript.
ActionScript 3.0 incluye algunas mejoras como, por ejemplo, nuevas funciones del núcleo del lenguaje y una API de Flash Player mejorada que proporciona un mayor control de objetos de bajo nivel.


Nota: las aplicaciones de Adobe® AIR™ también pueden utilizar las API de Flash Player.



Funciones del núcleo del lenguaje
El núcleo del lenguaje está formado por los bloques básicos del lenguaje de programación, como sentencias, expresiones, condiciones, bucles y tipos. ActionScript 3.0 contiene muchas funciones nuevas que aceleran el proceso de desarrollo.
Excepciones de tiempo de ejecución ActionScript 3.0 notifica más situaciones de error que las versiones anteriores de ActionScript. Las excepciones de tiempo de ejecución se utilizan en situaciones de error frecuentes y permiten mejorar la depuración y desarrollar aplicaciones para gestionar errores de forma robusta. Los errores de tiempo de ejecución pueden proporcionar trazas de pila con la información del archivo de código fuente y el número de línea. Esto permite identificar rápidamente los errores.



  • Tipos de tiempo de ejecución: En ActionScript 2.0, las anotaciones de tipos eran principalmente una ayuda para el desarrollador; en tiempo de ejecución, se asignaban los tipos dinámicamente a todos los valores. En ActionScript 3.0, la información de tipos se conserva en tiempo de ejecución y se utiliza con diversos fines. Flash Player y Adobe AIR realizan una verificación de tipos en tiempo de ejecución, mejorando la seguridad de los tipos del sistema. La información de tipos también se utiliza para especificar variables en representaciones nativas de la máquina, lo que mejora el rendimiento y reduce el uso de memoria.
  • Clases cerradas: ActionScript 3.0 introduce el concepto de clases cerradas. Una clase cerrada posee únicamente el conjunto fijo de propiedades y métodos definidos durante la compilación; no es posible añadir propiedades y métodos adicionales.
    Esto permite realizar una comprobación más estricta en tiempo de compilación, lo que aporta una mayor solidez a los programas. También mejora el uso de memoria, pues no requiere una tabla hash interna para cada instancia de objeto.
    Además, es posible utilizar clases dinámicas mediante la palabra clave dynamic. Todas las clases de ActionScript 3.0 están cerradas de forma predeterminada, pero pueden declararse como dinámicas con la palabra clave dynamic.
  • Cierres de métodos: ActionScript 3.0 permite que un cierre de método recuerde automáticamente su instancia de objeto original. Esta función resulta útil en la gestión de eventos. En ActionScript 2.0, los cierres de métodos no recordaban la instancia de objeto de la que se habían extraído, lo que provocaba comportamientos inesperados cuando se llamaba al cierre de método. La clase mx.utils.Delegate permitía solucionar este problema, pero ya no es necesaria.
  • *ECMAScript for XML (E4X): ActionScript 3.0 implementa ECMAScript for XML (E4X), recientemente estandarizado como ECMA-357. E4X ofrece un conjunto fluido y natural de construcciones del lenguaje para manipular XML. Al contrario que las API de análisis de XML tradicionales, XML con E4X se comporta como un tipo de datos nativo del lenguaje. E4X optimiza el desarrollo de aplicaciones que manipulan XML, pues reduce drásticamente la cantidad de código necesario.
    Para ver la especificación de E4X publicada por ECMA, visite www.ecma-international.org.

     
  • Expresiones regulares: ActionScript 3.0 ofrece compatibilidad nativa con expresiones regulares, que permiten encontrar y manipular cadenas rápidamente. ActionScript 3.0 implementa la compatibilidad con expresiones regulares tal y como se definen en la especificación del lenguaje ECMAScript (ECMA-262) edición 3.
     
  • Espacios de nombres: Los espacios de nombres son similares a los especificadores de acceso tradicionales que se utilizan para controlar la visibilidad de las declaraciones (public, private, protected). Funcionan como especificadores de acceso personalizados, con nombres elegidos por el usuario. Los espacios de nombres incluyen un identificador de recursos
    universal (URI) para evitar colisiones y también se utilizan para representar espacios de nombres XML cuando se trabaja con E4X.

  • Nuevos tipos simples: ActionScript 2.0 tiene un solo tipo numérico, Number, un número de coma flotante con precisión doble. ActionScript 3.0 contiene los tipos int y uint. El tipo int es un entero de 32 bits con signo que permite al código ActionScript aprovechar las capacidades matemáticas de manipulación rápida de enteros de la CPU. Este tipo es útil para
    contadores de bucle y variables en las que se usan enteros. El tipo uint es un tipo entero de 32 bits sin signo que resulta útil para valores de colores RGB y recuentos de bytes, entre otras cosas.
Funciones de la API de Flash Player
Las API de Flash Player en ActionScript 3.0 contienen muchas de las clases que permiten controlar objetos a bajo nivel.
La arquitectura del lenguaje está diseñada para ser mucho más intuitiva que en versiones anteriores. Hay demasiadas clases nuevas para poder tratarlas con detalle, de modo que en las siguientes secciones se destacan algunos cambios importantes.



Nota: las aplicaciones de Adobe® AIR™ también puede utilizar las API de Flash Player.

Modelo de eventos DOM3: El modelo de eventos del modelo de objetos de documento de nivel 3 (DOM3) ofrece un modo estándar para generar y gestionar mensajes de eventos de forma que los objetos de las aplicaciones puedan interactuar y comunicarse, mantener su estado y responder a los cambios. Diseñado a partir de la especificación de eventos DOM de nivel 3 del World Wide Web Consortium, este modelo proporciona un mecanismo más claro y eficaz que los sistemas de eventos disponibles en versiones anteriores de ActionScript.


Los eventos y los eventos de error se encuentran en el paquete flash.events. La arquitectura de componentes de Flash utiliza el mismo modelo de eventos que la API de Flash Player, de forma que el sistema de eventos está unificado en toda la plataforma Flash.



API de la lista de visualización: La API de acceso a la lista de visualización de Flash Player y Adobe AIR (el árbol que contiene todos los elementos visuales de una aplicación Flash) se compone de clases para trabajar con elementos visuales simples.

La nueva clase Sprite es un bloque básico ligero, similar a la clase MovieClip pero más apropiado como clase base de los componentes de interfaz de usuario. La nueva clase Shape representa formas vectoriales sin procesar. Es posible crear instancias de estas clases de forma natural con el operador new y se puede cambiar el elemento principal en cualquier momento, de forma dinámica.


La administración de profundidad es ahora automática y está incorporada en Flash Player y Adobe AIR, por lo que ya no es necesario asignar valores de profundidad. Se proporcionan nuevos métodos para especificar y administrar el orden z de los objetos.


Gestión de contenido y datos dinámicos
ActionScript 3.0 contiene mecanismos para cargar y gestionar elementos y datos en la aplicación, que son intuitivos y coherentes en toda la API. La nueva clase Loader ofrece un solo mecanismo para cargar archivos SWF y elementos de imagen, y proporciona una forma de acceso a información detallada sobre el contenido cargado. La clase URLLoader proporciona un mecanismo independiente para cargar texto y datos binarios en aplicaciones basadas en datos. La clase Socket proporciona una forma de leer y escribir datos binarios en sockets de servidor en cualquier formato.


Acceso a datos de bajo nivel: Diversas API proporcionan acceso de bajo nivel a los datos, lo que supone una novedad en ActionScript. La clase URLStream, implementada por URLLoader, proporciona acceso a los datos como datos binarios sin formato mientras se descargan. La clase ByteArray permite optimizar la lectura, escritura y utilización de datos binarios. La nueva API Sound proporciona control detallado del sonido a través de las clases SoundChannel y SoundMixer. Las nuevas API relacionadas con la seguridad proporcionan información sobre los privilegios de seguridad de un archivo SWF o contenido cargado, lo que permite gestionar mejor los errores de seguridad.


Trabajo con texto: ActionScript 3.0 contiene un paquete flash.text para todas las API relacionadas con texto. La clase TextLineMetrics proporciona medidas detalladas para una línea de texto en un campo de texto; sustituye al método TextFormat.getTextExtent() en ActionScript 2.0. La clase TextField contiene una serie de nuevos métodos interesantes de bajo nivel que pueden ofrecer información específica sobre una línea de texto o un solo carácter en un campo de texto. Dichos métodos son: getCharBoundaries(), que devuelve un rectángulo que representa el recuadro de delimitación de un carácter, getCharIndexAtPoint(), que devuelve el índice del carácter en un punto especificado, y getFirstCharInParagraph(), que devuelve el índice del primer carácter en un párrafo. Los métodos
de nivel de línea son: getLineLength(), que devuelve el número de caracteres en una línea de texto especificada, y getLineText(), que devuelve el texto de la línea especificada. Una nueva clase Font proporciona un medio para administrar las fuentes incorporadas en archivos SWF.

Brindanos tus Donaciones