Animación con Actionscript

14

Click here to load reader

Transcript of Animación con Actionscript

Page 1: Animación con Actionscript

Animación con Actionscript

La animación basada en fotogramas clave e interpolaciones dentro del entorno de autoría de Flash constituye el método más conocido y utilizado por la comunidad de usuarios de esta aplicación. No obstante, existe una alternativa menos extendida pero altamente recomendada si lo que se desea es lograr animaciones de un realismo y fluidez significativamente mayores: el control de la animación a través de scripts.

Los beneficios de la animación programada se resumen en los siguientes puntos:

1) Mayor realismo y fluidez en las animaciones

Las animaciones programadas logran un nivel de realismo perceptiblemente mayor que el de las interpolaciones basadas en fotogramas clave. Controlando la animación de un objeto mediante ecuaciones físicas y matemáticas, éste responderá de forma muy similar a la que reaccionan los objetos en la vida real, sometidos a parámetros físicos como velocidad, aceleración, fricción y elasticidad.

2) Dinamismo e interactividad

Mediante programación es posible definir el comportamiento animado de un objeto basándonos por ejemplo en la interacción por parte del usuario, ya sea a través de los dispositivos de entrada más comunes (teclado y mouse), o su movimiento delante de una cámara web. Las animaciones se vuelven "dinámicas", porque no se ajustan a un único patrón. A través de scripts podemos dotar a un objeto de un movimiento aleatorio, o hacerlo reaccionar a distintos parámetros físicos, de modo que nunca estaremos contemplando la misma animación.

3) Menor tamaño y mayor solidez

El tamaño de los archivos exportados se reduce drásticamente cuando nos limitamos a establecer una serie de reglas y descripciones para que el procesador genere la animación deseada en tiempo de ejecución. La ventaja no radica únicamente en el tamaño del archivo, sino también en la simplificación de la estructura interna del documento, donde generalmente se agrupa todo el código en un sólo fotograma, facilitando la lectura, interpretación y depuración.

Page 2: Animación con Actionscript

TUTORIALES MACROMEDIA FLASH

ActionScript, Introducción al lenguaje - Parte 1

Por Kitsch, http://www.javiernavarro.be/

ActionScript es un lenguaje desarrollado por Macromedia y con la única finalidad en sus inicios de agregarle interactividad a su creciente formato animación vectorial Flash SWF. Bien ActionScript se conoce como tal a partir de la versión 5 de Flash y a partir de esta es cuando los diseñadores se vieron en la necesidad de volverse programadores y le tuvieron que entrar al código pues las posibilidades que brindaba relativamente nueva tecnología era bastante.

En fin, después del obligado chorro introductivo, comentare que actualmente la versión mas reciente es ActionScript 2.0 y en no mucho saldrán las betas de ActionScript 2.5 y posteriormente el ActionScript 3.0 según publico Macromedia hace un par de meses; pero eso por ahora no nos interesa y continuaremos este mini manual o extenso tutorial (como gusten apreciarlo mejor) directamente al grano o bien tratando de meter la menos teoría posible, aunque en momentos no habrá otra alternativa.

Características Principales

• ActionScript está basado en la especificación ECMA-262, al igual que otros lenguajes como Javascript y C++

• Es 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 2.0 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 un lenguaje puramente orientado a objetos derivado del C o del Pascal como los anteriores, cada versión se acerca más a un lenguaje de este tipo. Así, la versión 2.0 de Flash MX 2004 y Flash 8 es mucho más potente y mucho más "orientado a objetos" que su anterior versión 1.0

• ActionScript presenta muchísimos parecidos con el Javascript; si conoces 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.

• 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.

Fuente: http://www.aulaclic.es/flashmx_2004/t_17_1.htm

Javascript y ActionScript

• ActionScript no admite objetos específicos de navegador como Documento, Ventana y Anclaje.

• ActionScript no admite completamente todos los objetos incorporados de JavaScript. • ActionScript no admite algunas construcciones sintácticas de JavaScript, como las

etiquetas de sentencia. • En ActionScript, la función eval() sólo puede realizar referencias de variables. • ActionScript 2.0 admite diversas funciones que no se incluyen en la especificación ECMA-

262, como las clases y la comprobación de tipos al compilar. Muchas de estas funciones

Page 3: Animación con Actionscript

se modelan a partir de la especificación del lenguaje ECMAScript (ECMA-262) edición 3 (consulte www.ecma-international.org/publications/standards/Ecma-262.htm).

• ActionScript no admite expresiones regulares mediante el objeto RegExp. No obstante, Macromedia Central sí es compatible con el objeto RegExp. Para más información sobre Macromedia Central, consulte www.macromedia.com/software/central.

Fuente: Ayuda de Flash. Libro: Aprendizaje de ActionScript en Flash 2.0, "Diferencias entre Javascript y Actionscript"

Bien entendido esto un poco, pasaremos directamente al código que es lo que nos interesa y comenzaremos por el estilo de programar, mejor conocido como sintaxis.

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 (){ instrucciones de la función ... }

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";

Page 4: Animación con Actionscript

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

Page 5: Animación con Actionscript

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;

Page 6: Animación con Actionscript

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);

Page 7: Animación con Actionscript

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

Page 8: Animación con Actionscript

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.

Page 9: Animación con Actionscript

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.

   

Page 10: Animación con Actionscript

TUTORIALES MACROMEDIA FLASH

ActionScript, Introducción al lenguaje - Parte 2

Por Kitsch, http://www.javiernavarro.be/

En todos los lenguajes de programación, un parte vital para el funcionamiento de nuestros programas, es sin duda alguna los condicionales y los bucles. Por medio de estos es posible controlar los eventos de interacción con el usuario y permite planificar que reacción tendrá el programa a determinada acción del usuario.

En Flash como en casi todos los lenguajes basados o derivados de C; los condicionales, sentencias y bucles trabajan por un comportamiento booleano, es decir, por un proceso lógico basado en "VERDADERO" Y "FALSO".

Cuando una condición se cumple el programa interpreta la acción como verdadero y de igual forma falso si no se cumple la condición especificada.

En ActionScript 2.0 son 4 los condicionales básicos y son:

• if • if.. else • if... else.. if ; y • switch

Además de estos existe otro que es "try..catch..finally", pero por ahora no entraremos en detalle con este pues un tanto mas complejo que los antes enlistados y que a continuación explicare como funcionan.

La estructura general de las condicionales es muy simple y basta con decirle al programa, que es lo que debe de hacer en caso de que suceda "x" evento.

if (condición) { sentencia };

Sentencia if

La sentencia if es la mas "básica" de las condicionales y se basa en el simple hecho de "si pasa esto, reacciona con esto". La sintaxis es simple, se declara la sentencia y entre paréntesis y entre llaves la acción a realizar si es que se cumple la condición.

Para comprender mejor su funcionamiento, anexo una ligera practica en la cual le diremos al programa que cuente los clics que hagamos a un botón.

Practica 1

• 1.- Creamos un nuevo documento de 200x150 píxeles • 2.- Creamos un botón y lo nombramos "botón" • 3.- Creamos un cuadro de texto dinámico vació y le asignamos el nombre de instancia

de: "texto" • 4.- Presionamos F9 para entrar al panel de ActionScript • 5.- En el fotograma 1 insertamos el siguiente script:

Page 11: Animación con Actionscript

var clics:Number = 0;

• 6.- Ahora seleccionamos el botón y le agregamos el siguiente script:

on (press) { clics += 1; //Incrementamos en 1 al presionar _root.texto.text = "1 click"; if (clics >> 1) { //iniciamos la sentencia _root.texto.text = clics+" clics."; } }

En la anterior práctica lo que hicimos fue hacer un rápido conteo de clics del ratón, para hacerlo creamos en el nivel 0 de la película la variable "clics" la cual tiene propiedad de "Number" y un valor inicial de 0.

Un detalle de la clase botón, es que los botones también son condicionales, reaccionan por el controlador "on" y la condición es el suceso del ratón, (release, prees, rolloOut, rollOver, etc.) y la acción se define entre llaves.

Bien en el código de nuestro botón, llamamos a la variable global "clics" y utilización un operador de incremento, con esto le decimos al flash que cada que se presione el botón, incremente el valor de la variable "clics" en uno.

Después utilizamos una sentencia if en la cual le decimos al programa que si "clics" es mayor a uno; en la variable "texto" (el cuadro de texto dinámico que creamos) escriba el valor actual de "clics" más el texto " clics."

If.. else

Este condicional en realidad solo es un complemento del básico if; la función principal de este condicional es al igual que if, si se cumple una condición ejecute cierta acción, pero además si no se cumple que realice otra.

La estructura seria la siguiente:

if (condición) { acción } else { acción }

Como se puede apreciar la sintaxis es exactamente la misma de la condición if, salvo el detalle que agregamos un condición "else", esta determinara que acción se producirá si el resultado de la condición es "FALSE" o bien si resulta "TRUE" ejecutara la primera opción.

En este ejemplo al igual que el anterior, hicimos un contador de clics, solo que en este caso, en vez de mostrarnos cuantos clics se han dado, al llegar al click 6 la barra negra, cambiara su opacidad.

Al igual que ejemplo anterior cree una variable global

var clics:Number = 0;

Le agregue el siguiente código:

Page 12: Animación con Actionscript

on (press) { clics += 1; if (clics<=5) { _root.barra._alpha = 100; }else { _root.barra._alpha = 20; } }

En este script escribimos la siguiente condicional, si se presiona el botón que incremente en uno el valor de la variable "clics", después especificación con la condición if que si el valor de "clics" es menor a 5, entonces la propiedad del movieclip barra se mantenga en 100; ahora que si esta condición de clics es menor a 5 no se cumple, entonces "else" define que el movieclip barra tenga una opacidad de 20.

if.. else.. if

Además de agregar una condición "else", podemos también en flash con este condicional, agregar varias condiciones a evaluar y todas se evaluaran de forma separada, si devuelven "TRUE" se ejecuta la acción especificada, mientras devuelva "FALSE" se ejecutara el resultado de else.

La estructura sería así:

if (condición){ sentencia } else if (condicion2){ sentencia } else { sentencia }

Para entender mejor este modo condicional, utilizaremos nuestro archivo "clics3.fla" y lo modificaremos un poco, agregando otro cuadro de texto dinámico y asignándole el nombre de instancia de "num" y modificando un poco el código del botón, quedando de la siguiente manera:

on (press) { clics += 1; _root.num.text = clics; //escribe el numero de clics if (clics==5) { _root.barra._alpha = 100; }else if (clics==6){ _root.barra._alpha = 60; }else if (clics==10){ _root.barra._alpha = 20; }else { _root.barra._alpha = 0; } }

En el anterior script le decimos al programa que cuando se presione el botón, incremente en uno la variable "clics", en la segunda instrucción le decimos que nos escriba el valor de "clics" en el cuadro de texto "num".

Page 13: Animación con Actionscript

En la tercera instrucción es donde colocamos nuestro condicional, el cual dice que si "clics" tiene un valor de 5 entonces al MC "barra" le asigne una opacidad de 100; si no es igual a 5 pero es igual 6, entonces el MC "barra" tendrá una opacidad de 60; si esto no se cumple pero "clics" tiene un valor de 10, entonces en la segunda condición asignamos que MC barra tenga una opacidad de 20; si ninguna de las condiciones se cumple, entonces el MC "barra" tendrá una opacidad de 0.

switch

El condicional switch funciona de forma muy similar a "if… else… if…" solo que este permite crear tantas condiciones necesitemos de manera ramificada y con un mayor control en la estructura, personalmente yo recomiendo mas el uso de switch en lugar "if… else… if…" simplemente por la organización y simplificación del código, aunque no lo haría para evaluar datos específicos pues no devuelve acción si se recibe "FALSE".

Al igual que con las sentencias "if" switch evalúa una condición y ejecuta una acción determinada, si esta condición devuelve "TRUE".

switch además requiere de algunos operadores más para funcionar correctamente, los cuales son: "case". "break" y "default", y son estos los que permiten crear una estructura organizada.

Una estructura switch sería así:

switch (condición) { case 1: sentencia; break; case 2: sentencia break; default: sentencia: }

La sintaxis siempre comienza con un "switch" y la condición a evaluar; después el operador "case" evaluara un valor determinado como condición; "break" le dice al flash que corte o rompa la sentencia ejecutada si es que la siguiente condición se cumple.

Nota: Si se omite "break" se ejecutaran por ejemplo las sentencias 1 y 2 simultáneamente.

Otro operador a tener en cuenta es "default", que es la sentencia predeterminada a ejecutarse. El caso default siempre debe ser el último caso de una sentencia switch y también debe incluir una sentencia break para evitar un error de paso al siguiente caso si se añade otro caso.

Practica 2

• 1.- Creamos una película nueva de 400x300 píxeles. • 2.- En el fotograma 1, creamos una variable para ser originales, "clics"

var clics:Number = 0;

• 3.- Creamos un cuadro de texto dinámico vació y le agregamos el nombre de instancia "texto".

• 4.- Creamos un MC vació y le agregamos el nombre de instancia de "logos". • 5.- Creamos un botón y le agregamos el siguiente script:

Page 14: Animación con Actionscript

on (press) { _root.clics += 1; //definición de la variable y que en cada click //se incremente en uno. switch (_root.clics) { //iniciamos el bucle case 1 : texto.text = "Enviando a ForoCreativo.net"; //Escribe el texto al presionar el botón getURL("http://www.forocreativo.net", "_blank"); //Envía a la direccion del sitio _root.logos.loadMovie("fc.png"); //carga una imagen del sitio break; //termina con la condición case 2 : texto.text = "Enviando a SoloPhotoshop.com"; getURL("http://www.solophotoshop.com", "_blank"); _root.logos.loadMovie("ps.png"); break; case 3 : texto.text = "Enviando a Taller Webmaster"; _root.createEmptyMovieClip("logos"); _root.logos.loadMovie("tw.png"); break; } //terminamos el bucle } //termina la acción al presionar.

En el ejemplo anterior, lo que acabamos de crear es una función bastante simple, la cual nos enviara a tres sitios web de los cuates de Creativa In. (Quique a lo mejor los conoce).

La función comienza evaluando el valor de la variable global "clics"; en el primer bloque de código case, evalúa si "clics" es igual a 1 entonces que escriba en el cuadro de texto "Enviando a ForoCreativo.net" como primera instrucción, después que nos envié a la URL "http://www.forocreativo.net" definida en el comando getURL y por ultimo en la tercera instrucción de este caso, que nos cargue una imagen en el MC "logos" y por ultimo con el operador "break" que nos termine en este caso la ejecución de instrucciones.

Funciona igual para los casos 2 y 3.