actionscriptya

¿Que es Actionscript?
   ActionScript es el lenguaje de programación para crear scripts en Flash, que es la tecnología más comunmente utilizada en la Web para la creación de animaciones vectoriales en las 
cuales una imagen es representada a partir de lineas (o vectores), por ende no se pixeliza.


Características generales del ActionScript
   Como ya hemos comentado, el ActionScript es el lenguaje de programación propio de Flash, tal y como el Lingo lo es de Macromedia Director, por ejemplo. El ActionScript está basado en la especificación ECMA-262.
  
    El 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.


   El ActionScript 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... aunque, evidentemente no tiene la potencia de un lenguaje puramente orientado a objetos derivado del C o del Pascal como los anteriores..
  
   El ActionScript presenta muchísimos parecidos con el Javascript; si conoce Javascript, la sintaxis y el estilo de ActionScript le resultarán muy familiares. Las diferencias entre ambos lenguajes las puede encontrar en la ayuda que acompaña al Flash MX.


   En la mayor parte de las ocasiones, no será necesario "programar" realmente, Flash MX pone a nuestra disposición una impresionante colección de "funciones" (de momento entenderemos "funciones" como "código ActionScript que realiza una función determinada") ya implementadas que realizan lo que buscamos, bastará con colocarlas en el lugar adecuado.


El panel de Acciones

En Flash MX, el Panel Acciones sirve para programar scripts con ActionScript. Esto es, que todo lo que introzcamos en dicho Panel se verá reflejado después en nuestra película. Debemos tener claro desde un principio que el Panel Acciones puede hacer referencia a Fotogramas u objetos, de modo que el código ActionScript introducido afectará tan sólo a aquello a lo que referencia el Panel. Por ejemplo, en la imagen inferior, se puede distinguir que el Panel Acciones hace referencia al Fotograma 1 de la Capa 'Acciones'.
El Panel Acciones se divide en 2 partes, a la izquierda tenemos una ayuda facilitada por Flash que nos da acceso de un modo rápido y muy cómodo a todas las acciones, objetos, propiedades etc... que Flash tiene predefinidos. Estos elementos están divididos en carpetas, que contienen a su vez más carpetas clasificando de un modo eficaz todo lo que Flash pone a nuestra disposición. Para insertarlos en nuestro script bastará con un doble clic sobre el elemento elegido.
Posteriormente veremos con detalle los distintos elementos de este Panel.
A la parte derecha tenemos el espacio para colocar nuestro script, aquí aparecerá lo que vayamos insertando. También incluye herramientas de utilidad, como la búsqueda de palabras, la posibilidad de insertar puntos de corte, el cambio modo normal / experto y la ayuda de Flash para ActionScript.
El Panel Acciones tiene 2 modos de edición:
Modo Normal: que nos permitirá insertar las Acciones situadas a la izquierda del Panel.
Cuando un script requiera de parámetros, Flash MX nos los pedirá mediante una casilla de introducción de texto. Simplemente deberemos introducir los datos que queramos en las casillas correspondientes.
Con el Modo Normal activo no es posible cometer errores de Sintaxis, debemos tener muy en cuenta, que un script con errores de sintaxis NO PROVOCARÁ NINGUNA ACCIÓN
Modo Experto: El modo experto es el idóneo cuando ya tenemos experiencia programando con ActionScript, típicamente cuando ya no comentamos errores de Sintaxis y conozcamos bien las Acciones y Opciones que nos suministra Flash.
La libertad de este modo es total y por tanto, también lo es la posibilidad de comenter fallos, para asegurarnos de que nuestro script es correcto, al entrar en Modo Experto nos aparecerá un icono con el siguiente aspecto:  Al pulsarlo Flash revisa nuestro código en busca de posibles errores, indicándonos, en su caso, la línea que presente el error y en qué consiste éste.
Es un fallo común pasarse horas buscando porqué nuestra película no funciona correctamente y que el motivo sea que un error de sintaxis ha invalidado todo el código existente en un fotograma, que actua como si no hubiera NADA DE CÓDIGO en él. Pongamos pues, mucha atención en esto y revisemos el código concienzudamente.
Para pasar del Modo Normal al Modo Experto hacer clic en la esquina superior derecha del panel, en el icono con tres lineas y un triángulo, se abrirá un deplegable donde podremos elegir Modo Experto.



Sintaxis
   La sintaxis de flash es como antes mencionaba un script y en particular muy, pero muy similar a los de java, aunque con sus respectivas diferencias, y aquí tratare de explicar como funciona.
En general el código se escribe de la siguiente manera



function nombrefuncion(){
introducciones de la funcion
.....
}
   Esto es, se declara siempre la variable u objeto, acción, método o función y las instrucciones que realizara cuando se cumplan los parámetros especificados. A continuación pongo un ejemplo un poco mas practico:
var a:Function = function (){
_root.onEnterFrame.play(movie_mc); };
   Si somos observadores veremos que hay más parámetros que los especificados en el ejemplo 1, y esto se debe a que en la practica entre mas especifico sea nuestro script, menos probabilidades de errores tendremos en el molesto tiempo de depuración.
En el script anterior encontramos que la función que se ejecuta, la define una variable, la cual es "a". Las variables en flash al igual que en otros lenguajes de programación, representa la información o datos que son cambiantes a lo largo de la ejecución del programa, y en flash se definen por la palabra clave "var". Aquí algunos ejemplos:
var casa:String = "Mi casa roja";
var coche:String = "Mi coche es un BMW";
var edad:Number = "25";
vivo = "Mexico";
   Si ponemos atención a los ejemplos anteriores encontraremos que no todas las variables son iguales, y eso es un error del programador. En Flash y mas en especifico en ActionScript se declara una variable con la palabra clave "var", hasta aquí todo esta bien, sin embargo todo lo que se encuentre a la izquierda de un signo de "=" es considerado una variable.
Entonces si funciona lo mismo escribir:
var casa:String = "Mi casa roja";
Que escribir:


vivo = "Mexico";
   Que caso tiene utilizar "var", el asignador ":" y la palabra "String" para declarar mis variables. Pues esto tiene una explicación de logística que en un futuro nos evitara muchos dolores de cabeza; ya que el motor compilador de flash viene incluido a partir de la versión MX 2004 con un comprobador de tipos. ¿Esto para que nos sirve? Ahora lo muestro:
var edad:Number = "25"; //Correcto
var edad:Number = "Veinticinco"; //Incorrecto y genera error.
   En el ejemplo anterior creo que mas claro no podría dejarlo. Cuando aplicamos un tipo a una variable, forzamos al compilador a que este reconozca exclusivamente el tipo de valor asignado, de lo contrario no se ejecutara y generara un mensaje de error, ejemplo:
var edad:Number = "Veinticinco"; //Incorrecto y genera error.
Flash nos responderá con el siguiente mensaje en el panel de salida:
  El tipo de la declaración de asignación no coincide: se encontró String donde se requiere Number.
  Esto aparentemente es un problema, pero cuando comencemos a escribir códigos mas complejos, le daremos gracias con creces, pues el compilador nos esta diciendo donde esta nuestro error de lógica.
  En conclusión, es bastante recomendable utilizar siempre la comprobación de tipos para nuestras variables, ya que esto nos ayudara mucho a evitar futuros errores en el momento de la compilación.
Nota: todos los tipos se comprueban, todos excepto el "object", que flash hace caso omiso a el. Para más información., leer el manual de ayuda del programa. "Comprobaciones de tipo".

Los Operadores
   Una vez entendida una de las principales bases del lenguaje que son las variables, ahora entraremos a otro de mayor importancia y son los operadores.
Puede que se pregunten por el uso de símbolos matemáticos en el código. Los símbolos se denominan operadores en ActionScript. Los operadores calculan un valor nuevo a partir de uno o varios valores y un operador le permite asignar un valor a una variable del código, por ejemplo el operador de igualdad (=) permite asignar un valor a una variable:
   Los operadores son caracteres que especifican cómo combinar, comparar o cambiar los valores de una expresión. Una expresión es cualquier sentencia para la que Flash puede calcular el resultado y que devuelve un valor. Puede crear una expresión combinando operadores y valores, o bien llamando a una función.
   El lenguaje ActionScript está formado por clases incorporadas, por lo que se deberá utilizar la sintaxis correcta para formar sentencias de manera que el código se compile y funcione correctamente en Flash. En este caso, la sintaxis se refiere a la gramática y la ortografía de un lenguaje que le permite programar. El compilador no comprende la sintaxis incorrecta, por lo que observará errores o advertencias en el panel Salida cuando intentes comprobar el documento en el entorno de prueba o no se ejecutara cuando se haya exportado a SWF el contenido. Por consiguiente, la sintaxis es un conjunto de reglas y directrices que le ayudan a formar código ActionScript correcto.
  Una sentencia es una instrucción que se da al archivo FLA para que haga algo, como, por ejemplo, ejecutar una acción concreta. Por ejemplo, puede utilizar una sentencia condicional para determinar si algo es verdadero o si existe. Posteriormente, podría ejecutar las acciones que especifique, como, por ejemplo, funciones o expresiones, en función de si la condición es verdadera o no. La sentencia if es una sentencia condicional que evalúa una condición para determinar la siguiente acción que debe tener lugar en el código.

Operadores de sufijo
   Los operadores de sufijo toman un operador y aumentan o reducen el valor del operador. Aunque estos operadores son unarios, se clasifican independientemente del resto de operadores unarios debido a su mayor precedencia y a su comportamiento especial.
++ Incremento (sufijo)
-- Decremento (sufijo
Ejemplo:

var suma:Number = 1; cantidad = ++suma; trace(suma);

   En el ejemplo anterior la variable "suma" tiene un valor numérico asignado de 1, en la instrucción siguiente aparece otra variable no asignada (object por defecto) con el operador de incremento "++" y ese se asigna a la variable suma y en una tercera instrucción le decimos que trace la variable suma. En nuestro panel de salida obtendremos "2" como resultado de este script.
Al "traducir al español" este script le dice al programa que "suma" tiene un valor de 1, pero cantidad tiene una instrucción que incremente en uno a "suma" y en la tercera línea le decimos a flash que escriba la variable "suma" la cual tiene un valor de 1 mas 1 agregado en la segunda instrucción, nos mostrara un resultado de 2.

Operadores unarios
   Los operadores unarios utilizan 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. También pueden aparecer tras el operando, en cuyo caso son operadores de sufijo.
++ Incremento (prefijo)
-- Decremento (prefijo)
+ + unario
! - unario (negación)
typeof Devuelve información de tipo
void Devuelve un valor no definido
Ejemplo:

var f:Number = 1;
var g:Number = 1;
var h:Number = f + g;
var i:Number = h;
trace(i);
   Con esto flash nos devolverá un valor de 2. Explico el porque. Asignamos que un valor de 1 a "f", y lo definimos como tipo "Number" al igual que lo hicimos con "g"; por el contrario a la variable "h" no le asignamos un valor numérico directamente, pero si especificamos que es un valor de tipo "Number" ¿Qué pasa aquí? ¿Por qué no genera error? ¿Y lo mismo para la variable "i"? Esto sucede porque al momento de la compilación flash solo entenderá que 1+1 es igual 2 y ese valor le asignara a "h" por lo tanto no contraviene con la declaración de tipo que le asignamos a esta; sucede lo mismo con la variable "i" la cual flash entiende que "i" es igual a "h" y si "h" tiene un valor de "2" entonces "i" también lo tiene, por lo que en la ultima instrucción trazara 2 en el panel de salida.

Operadores multiplicativos
   Los operadores multiplicativos toman dos operandos y realizan cálculos de multiplicación, división o módulo. Entre los operadores numéricos también figuran los operadores aditivos.
Todos los operadores de esta tabla tienen idéntica precedencia:
* Multiplicación
/ División
% Módulo



Ejemplo: var f:Number = 2; var g:Number = 2; var h:Number = f*g; var i:Number = h; trace(i);

Este ejemplo nos devolverá un valor numérico de 4 en el panel de salida.

Operadores relacionales
   Los operadores relacionales toman dos operandos, comparan sus valores y devuelven un valor booleano (verdadero o falso). Todos los operadores de esta tabla tienen idéntica precedencia:
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
instanceof Comprueba una cadena prototipo
in Comprueba las propiedades de objetos
Ejemplo:
var f:Number = 2;
var g:Number = 2;
var h:Boolean = f<=g;
var i:Boolean = h;
trace(i);
   Este ejemplo devolverá en el panel de salida "true" (verdadero) porque "f" es menor o igual a "g". En este ejemplo si sois observadores, verán que ha cambiado la asignación de tipos de "h" e "i" de Number a "Boolean"; esto forzara al compilador a solo recibir valores verdadero o falso, y estos operadores relacionales solo devuelven de esta forma.

Operadores de igualdad
   Los operadores de igualdad toman dos operandos, comparan sus valores y devuelven un valor booleano. Todos los operadores de esta tabla tienen idéntica precedencia:
== Igualdad
¡= Desigualdad
=== Igualdad estricta
¡== Desigualdad estricta
Ejemplo:
var f:Number = 2;
var g:Number = 2;
var h:Boolean = f==g;
var i:Boolean = h;
trace(i);
    Este ejemplo devolverá "true" (verdadero) en el panel de salida.

Operadores de Asignación
   Los operadores de asignación toman dos operandos y asignan un valor a un operando en función del valor del otro operando. Todos los operadores de esta tabla tienen idéntica precedencia:
= Asignación
*= Asignación de multiplicación
/= Asignación de división
%= Asignación de módulo
+= Asignación de suma
-= Asignación de resta
<<= Asignación de desplazamiento a la izquierda en modo bit
>>= Asignación de desplazamiento a la derecha en modo bit
>>>= Asignación de desplazamiento a la derecha en modo bit sin signo
&= Asignación de AND en modo bit
^= Asignación de XOR en modo bit
|= Asignación de OR en modo bit
Ejemplo
var f:Number = 2;
var g:Number = 10;
var h:Number = f*=g;
var i:Number = h;
trace(i);
  Este ejemplo devolverá 20 como resultado de la multiplicación de f * g.
  Existen muchos mas operadores, los cuales podemos encontrar mucha información detallada en la Ayuda, Operadores. del programa. Estos otros son un tanto mas complejos

Las Propiedades y Tipos de Objetos Principales
  Todos los símbolos de botón, símbolo o MovieClip de un archivo SWF son instancias del objeto y se pueden asignar nombres de instancia en el inspector de propiedades y utilizar los métodos y propiedades de la clase Button, MovieClip y Simbol para manipularlos con ActionScript. Los nombres de instancias de Button, MovieClip o Simbol se muestran en el explorador de películas y en el cuadro de diálogo Insertar ruta de destino del panel Acciones.
Estas tres clases son practicante la base de nuestros archivos SWF, y mas en claro de nuestras películas y programas flash; pues en 80% de las veces trabajaremos con ellos para crear interactividades y dinamismo a nuestros programas.
Enlistar aquí todas las propiedades aplicables cada una de estas clases me llevaría muchísimo tiempo, además de que de momento no utilizaremos todas, pero para consultas detalladas, todas las funciones se encuentran en la ayuda el programa en el libro Aprendizaje de ActionScript. 2.0
Si deseas que algo funcione en el archivo SWF, deberás hacer referencia a la instancia en cuestión y luego indicarle que haga algo, como asignarle una acción o cambiar su propiedades. Normalmente deberá definir el lugar en el que se encuentra dicha instancia en el archivo SWF (por ejemplo, en qué línea de tiempo se encuentra o en qué instancia está anidada) mediante la creación de la ruta de destino, al hacer esto, está haciendo referencia a dicha instancia en particular e indicándole que haga algo (por ejemplo, mover la cabeza lectora o abrir una página Web).
Ejemplo:
var a:Function = function () {
_root.mianime_mc._alpha = 35; //esta linea escribe la ruta de acción
if (b="activado") {
_root.miamine_mc._alpha = 100;
} else {
_root.mianime_mc._alpha = 35;
}
};
   En este ejemplo hay un función simple (mas compleja de lo antes visto pero no importa) que le dice al compilador que la variable "a" asignara la propiedad "alpha" a el objeto "mianime_mc" el cual es un MoviClip y se asigna la ruta mediante un "target" que el compilador le de la siguiente manera:
_root.mianime_mc.alpha = 35;
_root: define el nivel donde funcionara la instrucción; este puede ser _root el nivel principal; _this, mismo nivel o _parent, relativo.
mianime_mc: es el nombre de instancia que asignamos a nuestro objeto MovieClip.
_alpha: propiedad aceptada y validad de la Clase Object aplicada a la clase heredada MovieClip.
Nota: No importa si hasta el momento no se entiende mucho el script y los términos, mas delante veremos cada uno a detalle, solo deseo que se entienda la estructura en general.
Bien, retomando; los tres elementos nombrados previamente actuaran y se "enlazaran" entre si por medio del operador "." el cual en Flash tiene la función de unir argumentos, instancias y propiedades.
   En conclusión las propiedades en ActionScript representan las definiciones que aplicaremos a los objetos afectados por ellas; tamaño, color, forma, etc.; y trabajaremos con estas a lo largo de todos nuestros programas, entre mejor definidas estén, mejores serán mejor los resultados.

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites