¿Qué es ActionScript?
Lenguaje Script: Un script es un programa que puede acompañar un documento HTML o estar contenido en su interior. Las instrucciones del programa se ejecutan cuando se carga el documento, o cuando se produce alguna circunstancia tal como la activación de un enlace por parte del usuario. Este segundo tipo de acciones, desencadenan lo que se conocen como eventos.
Adobe ActionScript (fecha de lanzamiento en 1997) es el lenguaje de programación de la plataforma Adobe Flash. Originalmente desarrollado como una forma para que los desarrolladores programen de forma más interactiva. La programación con ActionScript permite mucha más eficiencia en las aplicaciones de la plataforma Flash para construir animaciones de todo tipo, desde simples a complejas, ricas en datos e interfaces interactivas.
La versión más extendida actualmente es Action Script 3.0, que significó una mejora en el manejo de programación orientada a objetos al ajustarse mejor al estándar ECMA-262 y es utilizada en las últimas versiones de Adobe Flash y Flex y en anteriores versiones de Flex. Desde la versión 2 de Flex viene incluido ActionScript 3, el cual mejora su rendimiento en comparación de sus antecesores, además de incluir nuevas características como el uso de expresiones regulares y nuevas formas de empaquetar las clases.
Funciones:
ActionScript 3.0 ofrece un modelo de la 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 son:
• Una nueva máquina virtual 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 se ajusta mejor al estándar ECMAScript (ECMA 262) y 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.
• Un núcleo del lenguaje basado en el próximo borrador de especificación del lenguaje ECMAScript (ECMA-262) edición 4.
• 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.
Características:
• El ActionScript está basado en la especificación ECMA-262, al igual que otros lenguajes como Javascript.• ActionScript es, como su nombre indica, un lenguaje de script, esto quiere decir que no hará falta crear un programa completo para conseguir resultados, normalmente la aplicación de fragmentos de código ActionScript a los objetos existentes en nuestras películas nos permiten alcanzar nuestros objetivos.• ActionScript 3 es un lenguaje de programación orientado a objetos. Tiene similitudes, por tanto, con lenguajes tales como los usados en el Microsoft Visual Basic, en el Borland Delphi etc... y aunque, evidentemente, no tiene la potencia de estos lenguajes, cada versión se acerca más. Así, la versión 3.0 utilizada en Flash CS5 es mucho más potente y mucho más "orientada a objetos" que su anterior versión 2.0.• La sintaxis ActionScript presenta muchísimos parecidos con el Javascript o PHP; si estamos familiarizados con estos lenguajes, la sintaxis y el estilo de ActionScript nos resultarán muy familiares. Las diferencias entre JavaScript y ActionScript las podemos encontrar en la ayuda que acompaña al Flash CS5.• En la mayor parte de las ocasiones, será necesario "programar". Flash CS5 pone a nuestra disposición una biblioteca de funciones, clases y métodos (de momento entenderemos esto como "código ActionScript que realiza una función determinada") ya implementadas que realizan lo que buscamos, bastará con colocarlas en el lugar adecuado
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 9, 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 admite AVM1 por compatibilidad con contenido existente y heredado de versiones anteriores.
Novedades de ActionScript 3.0
A continuación se citan algunas de las nuevas funcionalidades y ventajas que ofrece esta nueva versión de ActionScript en comparación con sus anteriores versiones. En verdad es más sofisticada en cuanto su estilo y adaptación para otras.
Metodos:
Los métodos son funciones que forman parte de una definición de clase. Cuando se crea una instancia de la clase, se vincula un método a esa instancia. A diferencia de una función declarada fuera de una clase, un método sólo puede utilizarse desde la instancia a la que está asociado.
Los métodos se definen con la palabra clave function. Al igual que sucede con cualquier propiedad de clase, puede aplicar cualquiera de sus atributos a los métodos, incluyendo private, protected, public, internal, static o un espacio de nombres personalizado. Puede utilizar una sentencia de función como la siguiente:
public function sampleFunction():String {}
Los métodos constructores, que a veces se llaman simplemente constructores, son funciones que comparten el nombre con la clase en la que se definen. Todo el código que se incluya en un método constructor se ejecutará siempre que una instancia de la clase se cree con la palabra clave new. Por ejemplo, el código siguiente define una clase simple denominada Example que contiene una sola propiedad denominada status. El valor inicial de la variable status se establece en la función constructora.
class Example { public var status:String; public function Example() { status = "initialized"; } } var myExample:Example = new Example(); trace(myExample.status); // output: initialized
Los métodos estáticos, también denominados métodos de clase, son métodos que se declaran con la palabra clave static. Estos métodos, que se asocian a una clase en lugar de a una instancia de clase, son útiles para encapsular la funcionalidad que afecta a algo más que el estado de una instancia individual. Como los métodos estáticos se asocian a una clase como un todo, sólo se puede acceder a dichos métodos a través de una clase, no a través de una instancia de la clase.
Los métodos de instancia son métodos que se declaran sin la palabra clave static. Estos métodos, que se asocian a instancias de una clase en lugar de a la clase como un todo, son útiles para implementar funcionalidad que afecta a instancias individuales de una clase. Por ejemplo, la clase Array contiene un método de instancia denominado sort(), que opera directamente en instancias de Array.
public class CustomArray extends Array { public static var arrayCountTotal:int = 0; public var arrayNumber:int; public function CustomArray() { arrayNumber = ++arrayCountTotal; } public function getArrayPosition():String { return ("Array " + arrayNumber + " of " + arrayCountTotal); } }
Métodos descriptores de acceso (captador y definidor)
Las funciones descriptoras de acceso get y set, también denominadas captadores y definidores, permiten implementar los principios de programación relacionados con la ocultación de información y encapsulación a la vez que ofrecen una interfaz de programación fácil de usar para las clases que se crean. Estas funciones permiten mantener las propiedades de clase como privadas de la clase ofreciendo a los usuarios de la clase acceso a esas propiedades como si accedieran a una variable de clase en lugar de llamar a un método de clase.
eventos
La estructura y la sintaxis cambian respecto a versiones anteriores; podemos decir que siempre deberemos realizar los mismos pasos:
De ésta manera, el resultado nos quedaría como sigue:
function saludar(e:MouseEvent):void{
trace("hola");
}
saludar_btn.addEventListener(MouseEvent.CLICK, saludar );
De ésta manera el botón "saludar_btn", cada vez que reciba un "click", ejecutará la función saludar. Por otro lado además de conocer los distintos eventos, hay que conocer el paquete en el que se encuentran, por eso es bastante útil la referencia de Adobe.
Aquellos que estén acostumbrados a versiones anteriores de ActionScript, sabrán que era un evento muy utilizado, por ejemplo para modificar continuamente propiedades de MovieClip, mover objetos por la pantalla, ect.
En esta nueva versión, tendremos otros eventos, como el del objeto Timer, pero seguiremos usando el evento ENTER_FRAME. Pues bien, para ejecutarlo, escribiremos el código como sigue
function avanzar(e:Event):void{
bola.x++;
}
stage.addEventListener(Event.ENTER_FRAME, avanzar);
Pues bien, si nos fijamos, la estructura de la asignación de eventos, es exactamente igual que la del ejemplo anterior para el botón. Simplemente se diferencia en que el evento ENTER_FRAME está en el paquete Event, y en que se le puede asignar al "stage".
Por lo tanto, según vayamos programando en AS 3.0 veremos que el tema de la asignación de eventos es más fácil de lo que parece. Sólo tenemos que conocer o tener la referencia de los eventos disponibles y los paquetes en los que se encuentran.
Otra de las grandes ventajas del nuevo sistema de asignación de eventos es que es mucho más versátil. Por ejemplo podemos dejar de ejecutar el ENTER_FRAME anterior con la siguiente función:
stage.removeEventListener(Event.ENTER_FRAME, avanzar);
Si nos fijamos la sintaxis es exactamente igual: stage + funcion+ (paquete.evento + función ).En la práctica podemos por ejemplo utilizar un sólo botón para que haga play y stop sucesivamente, añadiéndole a la primera función removeEventListener, y a la segunda addEventListener:
function pararBola(e:MouseEvent):void{
stop();
boton.removeEventListener(MouseEvent.CLICK, pararBola);
boton.addEventListener(MouseEvent.CLICK, moverBola);
}
function moverBola(e:MouseEvent):void{
play();
boton.removeEventListener(MouseEvent.CLICK, moverBola);
boton.addEventListener(MouseEvent.CLICK, pararBola);
}
boton.addEventListener(MouseEvent.CLICK, pararBola);
Para éste ejemplo creamos una interpolación en la línea de tiempo principal, y con el botón la detendremos y la activaremos sucesivamente
http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f30.htm