¿Que es?
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.
Variables de ActionScript 3.0
Una variable es un contenedor de información. Esta es la definición básica de una variable. Al contener información puede contener un número un texto, una matriz o cualquier otro objeto permitido en ActionScript. Una variable debe definirse antes de usarse, esto se hace de la siguiente manera:
Donde se tiene:
var: instruye al compilador a definir una variable.
myvariable: es el nombre de la variable.
Tipo: tipo de dato a guardarse en la variable.
valor: valor de la variable.
Por ejemplo si deseamos definir una variable que contenga la edad de un estudiante:
Los tipos de datos que se pueden asignar son: primitive value que es un valor que AS guarda en un bajo nivel de abstracción y complex value es un valor que no es un primitive value. Entre los principales tipos de datos se tiene:
Boolean: Un valor booleano que es true o false.
MovieClip: Este tipo de dato permite controlar símbolos de movie clip.
Number: valores numéricos
String: esto representa secuencia de caracteres o textos.
Array: Matrices
Veamos algunos ejemplos de asignación de variables:
Como nombrar variables
El nombre de las variables deben seguir las siguientes características:
– El primer carácter debe ser una letra, underline (_) o signo dolar ($).
– No debe ser una palabra reservada de AS.
– Debe ser única y hay que tener en cuenta que AS es case sensitive pues hola es diferente de hOla.
Operadores
Los operadores principales incluyen los que se utilizan para crear literales Array y Object, agrupar expresiones, llamar a funciones, crear instancias de clase y acceder a propiedades.
Los operadores de sufijo se aplican a un operador para aumentar o reducir el valor. Aunque estos operadores son unarios, se clasifican por separado del resto de los operadores unarios debido a su mayor precedencia y a su comportamiento especial. Al utilizar un operador de sufijo como parte de una expresión mayor, el valor de la expresión se devuelve antes de que se procese el operador de sufijo.
Los operadores unarios se aplican a un operando. Los operadores de incremento (++) y decremento (--) de este grupo son operadores de prefijo, lo que significa que aparecen delante del operando en una expresión.
Los operadores multiplicativos toman dos operandos y realizan cálculos de multiplicación, división o módulo.
Los operadores aditivos se aplican a dos operandos y realizan cálculos de suma y resta.
Los operadores de desplazamiento en modo bit se aplican a dos operandos y desplazan los bits del primer operando según lo especificado por el segundo operando.
Los operadores relacionales se aplican a dos operandos, comparan sus valores y devuelven un valor booleano.
Los operadores lógicos en modo bit se aplican a dos operandos y realizan operaciones lógicas a nivel de bits.
Los operadores de igualdad se aplican a dos operandos, comparan sus valores y devuelven un valor booleano. Todos los operadores de igualdad, indicados en la tabla siguiente, tienen la misma precedencia:ˆ
Los operadores lógicos se aplican a dos operandos y devuelven un resultado booleano.
El operador condicional es un operador ternario, lo que significa que se aplica a tres operandos.
Los operadores de asignación se aplican a dos operandos y asignan un valor a un operando en función del valor del otro operando.
Estructuras de control
Condición If – else
Como su nombre en inglés lo dice (si – sino), lo que hace es realizar una serie de instrucciones en caso de que se cumpla una condición dada y realizar otra serie de instrucciones en caso de que no lo haga. Su estructura es la siguiente.
Ciclo For
Como su nombre lo indica, para una serie de determinados valores, se ejecutará una serie de instrucciones. Su estructura es la siguiente.
Ciclo While
Lo que hace este ciclo es que, mientras una condición dada se cumpla, se ejecutará una serie de instrucciones. Su estructura es la siguiente.
Sentencia switch
Lo que hace es que, dependiendo del valor que pueda tomar una variable, será la serie de instrucciones que se van a realizar. Su estructura es la siguiente.
Donde break significa que se da por terminado el caso, por lo que no se debe olvidar colocarlo (a excepción del último de los casos) y default se refiere al caso en el que ninguno de los anteriores se cumple.
Como ejemplo haremos un programa que haga las cuatro operaciones básicas de la calculadora para el caso de dos números.
Funciones
Las funciones son bloques de código que realizan tareas específicas y pueden reutilizarse en el programa. Hay dos tipos de funciones en ActionScript 3.0: métodos y cierres de función. Llamar a una función método o cierre de función depende del contexto en el que se define la función. Una función se denomina método si se define como parte de una definición de clase o se asocia a una instancia de un objeto. Y se denomina cierre de función si se define de cualquier otra manera.
Para llamar a una función se utiliza su identificador seguido del operador paréntesis (()). Se puede utilizar el operador paréntesis para escribir los parámetros de función que se desea enviar a la función. Por ejemplo, trace() es una función de nivel superior en ActionScript 3.0:
Si se llama a una función sin parámetros, hay que utilizar un par de paréntesis vacíos. Por ejemplo, se puede utilizar el método Math.random(), que no admite parámetros, para generar un número aleatorio:
Funciones definidas por el usuario
Hay dos formas de definir una función en ActionScript 3.0: se puede utilizar una sentencia de función o una expresión de función. La técnica que se elija dependerá de si se prefiere un estilo de programación más estático o más dinámico. Si se prefiere la programación estática, o en modo estricto, se deben definir las funciones con sentencias de función. Las funciones deben definirse con expresiones de función si existe la necesidad específica de hacerlo. Las expresiones de función se suelen usar en programación dinámica (en modo estándar).
Sentencias de función
Las sentencias de función son la técnica preferida para definir funciones en modo estricto. Una sentencia de función empieza con la palabra clave function, seguida de:
El nombre de la función
Los parámetros, en una lista delimitada por comas y escrita entre paréntesis
El cuerpo de la función (es decir, el código ActionScript que debe ejecutarse cuando se invoca la función), escrito entre llaves.
Por ejemplo, el código siguiente crea una función que define un parámetro y después llama a la función con la cadena "hello" como valor del parámetro:
Expresiones de función
La segunda manera de declarar una función es utilizar una sentencia de asignación con una expresión de función (también se suele llamar literal de función o función anónima). Éste es un método que requiere escribir más y que se usaba mucho en versiones anteriores de ActionScript.
Una sentencia de asignación con una expresión de función empieza por la palabra clave var, seguida de:
El nombre de la función
El operador dos puntos (:)
La clase Function para indicar el tipo de datos
El operador de asignación (=)
La palabra clave function
Los parámetros, en una lista delimitada por comas y escrita entre paréntesis
El cuerpo de la función (es decir, el código ActionScript que debe ejecutarse cuando se invoca la función), escrito entre llaves.
Por ejemplo, el código siguiente declara la función traceParameter mediante una expresión de función:
Eventos
ActionScript 3.0 incorpora nuevos eventos y nuevos paquetes de eventos. Por otro lado la forma de llamarlos también es diferente. Los eventos para entendernos, vienen agrupados dentro de paquetes (los paquetes son carpetas). (Var)
MouseEvent:
Eventos a nuestra disposición
Los eventos para entendernos, vienen agrupados dentro de paquetes ( los paquetes son carpetas ). Así por ejemplo un evento del tipo "CLICK" o "DOUBLE_CLICK" lo podremos encontrar dentro del paquete MouseEvent, que reúne todos los eventos de éste tipo. El evento "ENTER_FRAME" se encuentra dentro del paquete Event, y así sucesivamente.
Asignar Eventos a un Objeto
La estructura y la sintaxis cambian respecto a versiones anteriores; podemos decir que siempre deberemos realizar los mismos pasos:
Crear una función que incorpore el código que se ejecutará con el evento.
Incluir un parámetro (variable) dentro de la función cuyo tipo de datos será el paquete de evento, por ejemplo si vamos a ejecutar una acción con un CLICK escribiremos (e:MouseEvent). El nombre del parámetro puede ser el que queramos (por costumbre se suele usar "e" o "event") y por último añadirle :void. ( más adelante veremos que significa )
Añadir un eventListener al objeto en cuestión; esto se hace escribiendo el nombre del símbolo, un punto y la función addEventListener
Añadiremos dos parámetros al addEventListener: el evento precedido de su paquete, y la función que queremos que se ejecute ( MouseEvent.CLICK, saludar )
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.
El evento ENTER_FRAME
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.
removeEventListener
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);
Manejadores:
Flash está compuesto por objetos, con su respectiva ruta dentro del swf. Cada uno de éstos en ActionScript pertenece a una clase (MovieClip, botones, Vectores (Arrays), etc.), que contiene Propiedades y Métodos o Funciones.
Propiedades: Dentro del archivo raíz de la clase, están declaradas como variables (alpha, useHandCursor, length,...).
Métodos o Funciones: Dentro del archivo raíz de la clase, están declaradas como funciones (stop(), gotoAndPlay(), getURL(),...).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.
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.
Fuentes:
https://es.wikipedia.org/wiki/ActionScript
http://blog.unijimpe.net/variables-en-actionscript/
https://help.adobe.com/es_ES/as3/learn/WSf00ab63af761f1702761490412937d6fc9b-7fda.html
https://neo5015.wordpress.com/as3-estructuras-de-control/
https://help.adobe.com/es_ES/as3/learn/WS5b3ccc516d4fbf351e63e3d118a9b90204-7fd0.html