BUILDING TECHNICAL SPECIFICATIONS
PART 3 EXECUTION 3.01 INSPECTION
En este apartado se estudiará en profundidad el lenguaje ActionScript, haciendo referencia a los elementos que lo componen así como a su sintaxis.
Como ya se ha dicho anteriormente ActionScript 2.0 es un lenguaje de programación orientado a objetos, por tanto el concepto fundamental que maneja son los objetos, junto con sus propiedades, métodos y eventos.
Antes de comenzar es necesario puntualizar que ActionScript 2.0 es un lenguaje Case Sensitive, es decir distingue entre mayúsculas y minúsculas, por tanto no será lo mismo mivariable que miVariable.
No es el objetivo de este curso el aprendizaje en profundidad de ActionScript 2.0, sino el conocer sus elementos de forma básica, y cómo utilizarlos para construir aplicaciones accesibles para usuarios con discapacidad visual.
Veamos a continuación los elementos del lenguaje
Comentarios
Son líneas de código que no se ejecutan, pero que sí se pueden ver en el entorno de desarrollo. Sirven para explicar en lenguaje natural lo que hace el código propiamente dicho. Son útiles cuando se cede el código a personas que no lo han generado, o para recordar el
funcionamiento del código una vez que ha pasado un tiempo desde su generación.
Para indicar en ActionScript 2.0 que se introduce un comentario se utiliza // y todo lo que vaya después, hasta el final de la línea será interpretado como comentario.
Si el comentario va a ocupar varias líneas, o bien se escribe // al principio de cada línea, o se escribe /* al principio del comentario y */ al final del mismo.
Veamos unos ejemplos:
// Este es un comentario de una línea
// Este es un comentario // que ocupa // varias líneas /* Este es un comentario que ocupa varias líneas */ Palabras reservadas
Como cualquier otro lenguaje de programación ActionScript cuenta con una serie de palabras reservadas, es decir un conjunto de palabras que no se pueden utilizar a la hora de nombrar variables, instancias de objetos, funciones, etc.
Las palabras reservadas en ActionScript 2.0 son:
break case class continue default delete dynamic else extends for function get
if implements import in
instanceof interface intrinsic new
private public return set
static switch this typeof
var void while with Variables
Como en cualquier lenguaje de programación, un elemento importante de ActionScript son las variables. Nos sirven para almacenar datos temporalmente en memoria durante la ejecución. En realidad lo que Flash hace al declarar una variable, es reservar un espacio en el que va a haber un dato de un tipo determinado, y este dato podrá ir cambiando su valor durante la ejecución del programa.
La declaración de una variable se realiza mediante la palabra reservada var seguida del nombre que le queramos dar a la variable, dos puntos y el tipo de dato que va a contener. La definición del tipo es opcional y en caso de que no lo definamos en la declaración se le asociará el tipo al que corresponda el valor que le asignemos. Es conveniente definir el tipo de datos de la variable en la declaración ya que clarifica el código.
Ejemplos de declaración:
var edad:Number;
var edad;
También se le puede asignar un valor a la variable en el momento de la declaración, como en el ejemplo siguiente:
var edad = 25;
Una vez visto cómo se crean las variables es necesario recalcar cuáles son las restricciones que existen en cuanto al nombre que les podemos dar:
- No pueden contener ninguna palabra reservada del lenguaje. - No pueden comenzar con dígitos.
- No pueden contener espacios en blanco.
- Solamente está permitido el guión bajo para unir palabras dentro del nombre.
Por último, aunque como veremos más adelante una variable puede contener cualquier tipo de dato, los tipos de datos básicos más importantes que puede contener una variable son los siguientes:
- Number: Cualquier valor numérico de tipo entero o decimal. - String: Cualquier información de tipo alfanumérico.
- Boolean: Es un valor booleano verdadero o falso (true o false). - Array: Es una lista de datos, que pueden ser del mismo tipo (lo
habitual) o de distintos tipos.
De todas formas como veremos en los siguientes apartados podemos asignar a una variable datos de otros tipos
Expresiones
Como ya se ha visto se puede asignar un valor a una variable mediante el operador = pero en el caso de que este valor por ejemplo dependa del valor de otra u otras variables necesitamos recurrir a las expresiones.
Las expresiones se utilizan para dar valor a una variable cuando ese valor depende de otra variable cuyo valor no se conoce a la hora de utilizar la primera.
Por ejemplo si tenemos una variable edad que depende de otra edad_padre pero en el momento de asignar valor a edad no
conocemos el valor de edad_padre no podemos asignarle un valor fijo.
var edad:Number;
var edad_padre:Number;
Si sabemos que la edad es la edad del padre menos 30, independientemente de cuál sea la edad del padre podemos utilizar la siguiente expresión para darle valor a edad:
edad = edad_padre – 30;
Por tanto las expresiones son muy importantes y se utilizan continuamente a la hora de generar una aplicación.
Están compuestas por datos o variables, que se combinan mediante operadores que pueden ser de tres tipos: aritméticos, de comparación y de asignación.
En los siguientes apartados veremos los tipos de operadores y para que sirven.
Operadores aritméticos
Son los operadores aritméticos usuales, además de alguno nuevo. Son los siguientes:
Suma (+). Resta (-).
Multiplicación (*). División (/).
Módulo (%): Es el resto de una división, sirve para saber si un número es divisible por otro. Cuando esto ocurre, el módulo es cero.
Incremento en una unidad (++). Decremento en una unidad (--).
Los dos últimos son muy usados, y si se utilizan en la parte derecha de una asignación hay que tener en cuenta que el operador esté a la izquierda o a la derecha de la variable, ya que cambia su comportamiento. Veámoslo con un ejemplo:
var y = 0; // x vale 0 var x = 5; // y vale 5
y = x; // Ahora y también vale 5
y = ++x; // En este caso se suma una unidad a x, y se // asigna el valor a y, luego las dos valdrán 6
y = x++; // En este caso se asigna el valor de x a y, // y luego se suma 1 a x, con lo cual y valdrá // 5 y x valdrá 6
Operadores de comparación
También son conocidos como operadores booleanos. Siempre tienen como respuesta verdadero o falso, y sirven para tomar decisiones respecto a que se cumpla o no una determinada condición.
Los operadores de comparación en ActionScript son los siguientes:
Operador Descripción
== Igual a
!= No es igual a
> Es mayor que
>= Es mayor o igual que
< Es menor que
<= Es menor o igual que && Y, booleano
|| O, booleano
! No, booleano
Operadores de asignación
Sirven para asignar un valor (o el valor de una variable o expresión) a una variable.
Son los siguientes:
Operador Nombre Ejemplo Significado
= Igual x = y x = y
+= Añadir un valor x+=y x = x + y
–= Restar un valor x–=y x = x – y
*= Multiplicar un valor x*=y x = x * y /= Dividir por un valor x/=y x = x / y %= Módulo por un valor x%=y x = x % y <<= Correr a la izquierda según
un valor x<<=y x = x << y >= Correr a la derecha según
un valor x>=y x = x > y
>>= Llenar de ceros según un
valor x>>=y x = x >> y Operador new
Este operador permite crear una variable cuyo contenido es un objeto de los definidos en Flash. Por ejemplo, para crear una variable
que sea un objeto de tipo Sound (sonido), usaremos la siguiente sintaxis:
var sonido = new Sound(); Operador _this
Este operador se usa para referirse al objeto mismo en el que se encuentra el código ActionScript.
Condicionales
Son construcciones, que nos permiten realizar un conjunto de acciones u otro dependiendo de si se cumple o no una cierta condición. Es decir permiten decidir qué hacer en función de que una premisa sea cierta o falsa.
Su sintaxis es la siguiente:
if (condición){ acciones }
Donde condición es una expresión que da como resultado verdadero o falso, y acciones son las instrucciones que se ejecutan en el caso de que la condición sea verdadera.
Con esta sintaxis, si la condición es falsa no se realizaría ninguna acción, podemos controlar qué hacer en el caso de que la condición sea falsa con la siguiente sintaxis:
if (condición){
acciones si condición es verdadero
} else{
acciones si condición es falso }
Por último estas estructuras condicionales se pueden complicar tanto como sea necesario, pudiendo introducir un if dentro de otro, a su vez conteniendo otro, etc.
Lo visto hasta ahora es lo que se llama condicional simple, pero cuando la condición puede tomar varios valores, es más conveniente utilizar la construcción switch, que permite analizar varias propuestas al mismo tiempo en una sola instrucción.
Supongamos que tenemos una condición la cual puede tomar varios valores: valor1, valor2, etc. Para decidir qué hacer dependiendo del valor que tenga la condición usaremos la siguiente sintaxis:
switch (condición){
case valor1: acciones; break;
case valor2: acciones; break;
case valor3: acciones; break;
default: acciones;
}
En esta construcción cada case representa cada uno de los posibles valores que puede tomar la condición, y las acciones a realizar en cada caso. El conjunto acciones de cada caso debe terminar con la instrucción break.
El último caso no utiliza la palabra case sino default, ésta se refiere al caso en el que la condición adopte un valor que no está contemplado en ninguno de los case anteriores, es parecido al else del esquema if.
Bucles
Los bucles son construcciones que nos permiten realizar una o varias acciones de forma repetitiva. Existen tres tipos: “mientras”, “repetir” y “para”.
Los tres funcionan de forma similar y su lógica es parecida, pero cada uno de ellos tiene sus peculiaridades, que los hacen más o menos adecuados dependiendo de la situación en la que se vayan a usar.
Veamos cada uno de ellos: Bucle “mientras”
Este bucle realiza una o varias acciones mientras que se cumpla una cierta condición. Su sintaxis es:
while (condición){ acciones; }
En este caso se comprueba la condición, si se cumple se realizan las acciones y una vez hechas se vuelve a comprobar la
condición, si se cumple se vuelven a realizar las acciones, y así hasta que la condición no se cumpla.
Por tanto con este bucle se realizan las acciones cero o más veces.
Bucle “Repetir”
Este bucle realiza una o más acciones hasta que deje de cumplirse una cierta condición. Su sintaxis es la siguiente:
do{
acciones; }
while (condición)
Con este bucle se realizan las acciones, se comprueba si se cumple condición, en caso afirmativo se vuelven a repetir las acciones, hasta que la condición deje de cumplirse.
En este caso las acciones se realizan al menos una vez, aunque no se cumpla la condición, ya que primero se realizan las acciones y luego se comprueba la condición.
Bucle “Para”
El bucle “Para” se utiliza cuando conocemos el número de veces que se deben repetir las acciones a ejecutar. Se suele utilizar mucho para trabajar con arrays, y su elemento principal suele ser una variable de tipo numérico que será la que controle la ejecución del bucle.
Su sintaxis es la siguiente:
for (valor inicial; condición; modificar valor){ acciones;
}
Donde valor inicial es el valor de la variable, con el que comienza el bucle, condición es lo que debe cumplirse para que se ejecuten las acciones, y modificar valor, es la instrucción que va modificando el valor de la variable cada vez que se ejecuta el bucle.
Veamos un ejemplo:
var i:Number;
for (i=0; i<10; i++){ accion1; accion2; }
Al llegar al bucle, i tomará el valor 0, como i es menor que 10, se ejecutarán las acciones, y luego se suma 1 a i, luego i valdrá 1, como i es menor que 10, se ejecutan de nuevo las acciones y se suma 1 a i. El bucle seguiría ejecutándose hasta que i valga 10.
Para terminar, es muy importante señalar que en los bucles while y do es imprescindible modificar el valor de la condición dentro del bucle, ya que si esta condición no se modifica se entrará en un bucle infinito, dado que la condición siempre se cumplirá.
En este caso el programa se quedará ejecutando las acciones del bucle indefinidamente, lo cual es un problema grave.
Funciones
Son un elemento indispensable en cualquier lenguaje de programación y por tanto también en ActionScript.
Simplificando, una función es un trozo de código al que le damos un nombre que nos permite utilizarlo varias veces a lo largo de un programa sin tener que escribir el código cada vez que lo utilicemos.
Una función es un pequeño programa en el cual puede haber todo tipo de instrucciones, declaraciones de variables, y puede o no devolver un resultado.
Para usar una función deben realizarse dos acciones, lo primero es la definición de la función (crearla), y luego llamarla desde el programa principal (ejecutarla).
La sintaxis de la declaración de funciones es la siguiente:
function Nombre(parámetro1: tipo, parámtro2:tipo, …){
instrucciones;
}
Donde Nombre es el nombre que se le quiera dar a la función, normalmente está relacionado con las acciones que ejecute.
Los parámetros son opcionales y son los datos del programa principal con los que va a trabajar la función.
Por último las instrucciones, es el código ActionScript necesario para que la función realice su cometido.
En cuanto a la llamada a la función, es decir lo que hay que hacer para usarla en el programa principal, la sintaxis es la siguiente:
Nombre(valor1, valor2, …);
Donde Nombre es el nombre que se le haya dado a la función en la declaración, y valor1, valor2, etc, son los valores que tendrán los parámetros a la hora de ejecutar el código de la función. Obviamente estos valores deben coincidir con el número y tipo de los parámetros que se hayan definido en la declaración de la función.
Las funciones pueden devolver o no un valor, para devolver un valor se utiliza la instrucción return, la cual debe colocarse al final del código de la función.
Veamos un ejemplo de todo esto.
Crearemos una función que calcula el área de un rectángulo, a partir de su base y altura, las cuales se le pasarán como parámetros.
// Declaración de la función
function area(b:Number, a:Number){
var valor_area:Number; //Esta es una variable local, // sólo afecta a la función
valor_area = b*a;
return valor_area;
}
//Aquí irían declaraciones de otras funciones //o código del programa principal.
//Ahora se hace la llamada a la función
trace(area(20,10));
//Esta instrucción muestra en la ventana de salida //el área de un rectángulo de base 20 y altura 10, //en este caso 200
//También se puede hacer la llamada usando variables
var base = 20; var altura = 10;
trace(area(base,altura)); //El resultado sería el mismo
Arrays
Los arrays son otro de los elementos importantes en los lenguajes de programación.
Un array, también llamado vector no es más que un conjunto finito de elementos, los cuales se pueden manejar por separado. Es muy útil cuando se debe manejar un conjunto de varios elementos del mismo tipo, ya que en vez de crear una variable para cada uno se pueden almacenar como elementos de un array, lo que simplifica su manejo a la hora de la programación.
Para declarar un array se utiliza el operador new, y disponemos de varias formas de crearlos. Veamos algunos ejemplos:
var vector :Array = new Array();
Este código crea un array vacío, es decir no contiene ningún elemento
Otra forma de crear arrays es:
var vector:Array = new Array(n);
Con esta otra modalidad, el array tampoco contiene datos pero, sí que definimos el número de elementos que va a tener.
Por último podemos definir los datos que va a contener el array a la hora de crearlo, esto se consigue de la siguiente manera:
var nombres:Array = new Array(“Luis”, “Ana”, “Alicia”, “Pedro”);
De este modo se crea un array de cuatro elementos cada uno de los cuales es un nombre, cuyos valores son los que están dentro del paréntesis.
Una vez que tenemos creado un array, el modo de acceder a los datos que contiene es mediante lo que se llama índice, que no es más que un número entre corchetes que referencia a un elemento del array. Es importante reflejar que los elementos de un array son enumerados a partir de cero, es decir, el primer elemento del array tendrá el índice 0.
De este modo la anterior declaración del array nombres es equivalente al siguiente código:
var nombres:Array = new Array(); nombres[0] = “Luis”;
nombres[1] = “Ana”; nombres[2] = “Alicia”; nombres[3] = “Pedro”;
Por tanto para referirnos a un elemento de un array debemos escribir el nombre del array y entre corchetes el índice del elemento al que queremos acceder.
Más adelante se verán las propiedades y los métodos del objeto Array.
Acciones en ActionScript
En este apartado se estudiarán las acciones más comúnmente utilizadas en ActionScript para el manejo de la línea de tiempo.
Veamos las más usadas:
- gotoAndPlay(n): Indica al reproductor que debe ir al fotograma n, y reproducir el resto de la película desde ese fotograma. - gotoAndStop(n): Indica que la cabeza lectora vaya al fotograma
n y se detenga.
- on: Se utiliza para responder a eventos, por tanto se usará con botones y clips de película, ya que los gráficos no reciben eventos.
- play: Reproduce la película.
- stop: Detiene la reproducción de la película.
- stopAllSounds: Detiene la audición de todos los sonidos que se están reproduciendo.
Funciones globales
Aunque ActionScript 2.0 cuenta con un gran número de ellas se verán en este apartado las más destacadas, y comúnmente utilizadas.
Entre estas podemos destacar:
fscommand
Esta función permite que la película se comunique con el navegador web del usuario. Su sintaxis es:
fscommand(“comando”, “argumento”);
En la siguiente tabla se muestran los comandos predeterminados que ofrece Flash para la función fscommand.
Comando Argumento Descripción
quit Cierra el proyector
fullscreen true / false Especifica si queremos que Flash se visualice a pantalla completa o no allowscale true / false Cambia la escala de la película dentro del reproductor showmenu true / false Activa los elementos del menú o los atenúa, según el argumento exec Ruta de acceso al programa Ejecuta un programa desde el proyector
trapallkeys true / false Envía todos los eventos de teclado al reproductor
getURL
Esta función permite abrir una dirección URL, en definitiva es un hipervínculo.
En realidad con esta función podemos abrir o cargar una página web, otra película Flash, un sitio ftp, un ejecutable, un script CGI o cualquier otra cosa que exista en internet o en un ordenador local y se conozca su dirección URL.
Su sintaxis es la siguiente:
getURL(“URL”, “ventana”, “variables”);
Veamos cuáles son sus parámetros:
- URL: Es la dirección de la página que se quiere cargar.