You are on page 1of 20

ACTION SCRIPT

Introducción
El ActionScript es un lenguaje de programación que crea Script (conjunto de
instrucciones de un programa). Este lenguaje crea script en Flash, con el que crear
películas con elementos interactivos. El Flash es un programa para crear
animaciones vectoriales para páginas web.
Los lenguajes de programación se usan para ponerse en contacto con el
computador enviándole y recibiendo la información de vuelta. Gracias a los
lenguajes de programación, se le puede decir a la computadora lo que esta debe
hacer, así como preguntarle por cualquier información.
El ActionScript nos ayuda a crear una película en la que el usuario pueda hacer por
ejemplo un clic con el ratón o presionar una tecla, entonces se ejecuta un
determinado Script. Como podría ser que se cargue otra película. El ActionScript
quiere conseguir que estas películas se comporten exactamente como el usuario o
programador decida.
Para conseguir que las películas se comporten como el usuario quiere no es
necesario entender todos los posibles usos de esta herramienta de creación de
Script. Si partimos de un objetivo claro podemos empezar a crear Script con
acciones sencillas para posteriormente incluir nuevas instrucciones a medida que
las vayamos aprendiendo a utilizar.

El ActionScript es un lenguaje de programación para la creación de Script orientado


a objetos. Lo que significa que cuando se dan determinados eventos (por ejemplo
un clic del ratón), se producen unas determinadas acciones.

Para comenzar a crear Script no es necesario tener un conocimiento amplio del


ActionScript. Por ejemplo, algo sencillo sería crear un Script que se lo asignamos a
un botón con el que queremos que al ser presionarlo nos cambie el brillo de un clip
de película.

Con el ActionScript también podemos cambiar el color, aumentar o reducir el


volumen del sonido, etc. Pero estas son algunas, las posibilidades que tiene este
lenguaje de programación en este campo son muy amplias.
Botones
En Actionscript 2.0 existía la opción de crear un botón, hacer click encima y escribir
código encima del propio objeto. En AS3 no existe la posibilidad de escribir código
sobre clips de película ni botones, todo el código debe estar situado en la linea de
tiempo o en clases. Esto puede parecer un inconveniente, pero a la hora de hacer
desarrollos medianos/complejos hace las cosas mucho más sencillas.
Además programar botones en AS3 no es más complicado que hacerlo en AS2,
sólo tenemos que añadir el evento al objeto con addEventListener, indicar que
evento añadimos ("Event.CLICK", "Event.MOUSE_DOWN, etc…) y crear la función
que se vá a ejecutar cuando se reproduzca el event. Es decir, que traducido al
castellano, lo que decimos es:

Action Script (Eventos de ratón)


Cuando capturamos un evento, lo que realmente estamos utilizando es un string,
una cadena de texto. Por ejemplo al escribir MouseEvent.CLICK, estamos
accediendo a la propiedad CLICK de la calse MouseEvent, que nos devuelve un
string cuyo valor es 'click'.
Por tanto, nos daria lo mismo capturar este ecento utilizando:
miBoton.addEventListener(MouseEvent.MOUSE_UP, miFuncion);
Que utilizar la cadena equivalente:
miBoton.addEventListener('click', miFuncion);
Únicamente comentamos esto porque puede que a alguien le sea más cómodo
utilizarlo de una forma u otra, o que no se extrañe si en algún ejemplo lo ve así.
Veamos todos los eventos que que porduce el ratón. Sólo se se producirán
cuando la acción se realize sobre el elemento que tiene el escuchador:
 MouseEvent.CLICK ("click") - Se procue al hacer clic (pulsar y soltar el
botón ratón).
 MouseEvent.DOUBLE_CLICK ("doubleClick") - Se produce al hacer
doble clic.
 MouseEvent.MOUSE_DOWN ("mouseDown") - Se produce al pulsar el
botón del ratón (antes de soltarlo).
 MouseEvent.MOUSE_MOVE ("mouseMove") - Se produce cuando el
ratón se mueve sobre el elemento.
 MouseEvent.MOUSE_OUT ("mouseOut") - Se produce cuando se saca el
cursor de encima del elemento.
 MouseEvent.MOUSE_OVER ("mouseOver") - Se produce cuando el ratón
se coloca sobre el objeto.
 MouseEvent.MOUSE_UP ("mouseUp") - Se produce cuando se suelta el
botón del ratón.
 MouseEvent.MOUSE_WHEEL ("mouseWheel") - Se produce al presionar
la rueda del cursor.
 MouseEvent.ROLL_OUT ("rollOut") - Se produce cuando se mueve el
ratón fuera del elemeto.
 MouseEvent.ROLL_OVER ("rollOver") - Se produce cuandos e mueve el
ratón sobre el elemento.

Controladores de la línea de tiempo

Una vez insertados los botones y definidos los eventos sobre los que deben
actuar, tendremos que decidir qué queremos que hagan.
De esta forma podremos crear dinamismo entre nuestras secciones.
Imagina que tenemos la siguiente línea de tiempo:
Observa la capa Contenido. En ella se encuentran todo el contenido de las
secciones.
De esta forma, si no aplicásemos ninguna acción sobre la línea de tiempo, todas
las secciones se ejecutarían una seguida de la otra. Lo que queremos conseguir
es que se ejecute la primera (para mostrar la sección principal) y el cabezal se
pare hasta nueva orden (para mostrar la segunda).
Para ello utilizaremos la función stop().
Esta función sirve para parar el cabezal de la línea de tiempo donde sea
colocada. Así que seleccionamos el último fotograma de la sección y abrimos
el Panel Acciones.
Allí deberemos escribir únicamente la línea:

stop();

Esto hará que cuando la animación llegue a ese punto se detendrá a espera de nueva orden.

Nosotros hemos colocado las acciones en una capa aparte llamada Acciones para así poder
acceder más rápido a ella. El método es el mismo, solamente habrá que crear fotogramas
claves en aquellos sitios en los que queramos insertar un stop().

Ya hemos conseguido detener la presentación. Pero, ¿cómo hacemos que se muestre la


segunda? Muy sencillo.

Los botones nos ayudarán a desplazar el cabezal por la línea de tiempo. Así que
modificaremos el código de uno de los botones donde habíamos escrito:

on (release) {

Para que se pueda leer lo siguiente:

on (release) {

gotoAndPlay(21);
}

De esta forma, al hacer clic sobre ese botón, el cabezal de reproducción se


desplazará hasta el fotograma 21 y reproducirá a partir de allí.

ActionScript 3

import flash.events.*;

miBoton.addEventListener(MouseEvent.CLICK, miFuncion);

function miFuncion(event:MouseEvent):void

gotoAndPlay(21);

Si añadimos un stop() en el último fotograma de la segunda sección, cuando éste se


reproduzca se parará y el contenido permanecerá estático en espera de una nueva orden.

Las Escenas
Para ir a una escena o un fotograma específicos de la película, se utiliza la acción Ir
a. Cuando la película salta a un fotograma, se puede optar entre reproducirla a partir
del nuevo fotograma (predeterminado) o detenerla en el mismo. La película también
puede saltar a una escena y reproducir un fotograma especificado o el primer
fotograma de la escena siguiente o de la anterior. Para saltar a un fotograma o a
una escena:
Go to (ir a) explicación y pasos los cuales debes seguir para hacer la escena:
1. Seleccione la instancia de fotograma, de botón o de clip de película a la que
desea asignar la acción.
2. Seleccione Ventana> Acciones para mostrar el panel Acciones.
3. En la lista de la Caja de herramientas, haga clic en la categoría Acciones
básicas para mostrar las acciones básicas, y seleccione la acción Ir a.
4. Flash inserta la acción Ir a y reproducir en la ventana Script.
5. Para que la película siga reproduciéndose tras el salto, mantenga
seleccionada la opción Ir a y reproducir (predeterminada) en la sección
Parámetros. Para detener la película en un fotograma especificado, anule la
selección de Ir a y reproducir.La acción cambia a Ir a y detener.
6. En el menú emergente Escena de la sección Parámetros, especifique la
escena de destino: Puede especificar la escena actual o una escena
indicada, o siguiente o anterior para que la película salte al primer fotograma
de la escena.
7. En el menú emergente Tipo de la sección Parámetros, especifique un
fotograma de destino.
8. Fotograma siguiente o anterior.
9. Seleccione Número de fotogramas, Etiqueta de fotograma o Expresión para
especificar un fotograma. Una expresión es cualquier parte de una sentencia
que genera un valor, como 1+1.
10. Si selecciona Número de fotogramas, Etiqueta de fotograma o Expresión en
el paso 6, para Fotograma, introduzca el número de fotograma, la etiqueta o
una expresión que calcule un número de fotograma o una etiqueta.
La siguiente sentencia indica el fotograma situado cinco fotogramas por delante del
fotograma que contiene la acción:
gotoAndStop(_currentframe + 5);
STOP:
Stop (alto) información y pasos:
A menos que se indique lo contrario, una vez que se inicia una película se
reproduce por todos los fotogramas de la Línea de tiempo. Puede detener e iniciar
una película a intervalos específicos mediante las acciones Reproducir y Detener.
Por ejemplo, puede detener una película al final de una escena antes de continuar
con la siguiente escena. Una vez detenida, una película debe iniciarse de nuevo
de forma explícita, mediante la acción Reproducir.
Reproducir y Detener se utilizan por lo general para controlar los clips de películas
con botones o para controlar la Línea de tiempo principal. El clip de película que
desea controlar debe tener un nombre de instancia, un destino asignado y debe
estar presente en la Línea de tiempo.
Algunas acciones simples:

Propiedad Descripción

stop(); Detener

play(); Reproducir

gotoAndStop(); Ir y detenerse

gotoAndPlay(); Ir (escena y/o frame) y reproducir

nextFrame(); Ir a siguiente frame

prevFrame(); Ir a frame precedente

nextScene(); Ir a siguiente escena

prevScene(); Ir a escena precedente

Crear una clase para variable globales

Una variable global es aquella a la que podemos acceder desde cualquier parte del proyecto.

En ActionScript 2 podíamos crear una variable global de la siguiente manera:

//Código ActionScript 2

_global.miVariable = "Esta es una variable global";


Esto ya no es válido en ActionScript 3. Pero en su lugar podemos crear una clase y guardar
en ella estas variables.

La clase la escribimos en un archivo .as (Archivo → Nuevo → Archivo de ActionScript).

Aunque no es obligatorio, lo habitual es crear un patrón de diseño Singleton. No vamos a


detallar que és. A grandes rasgos, es una forma de escribir una clase de manera que no se
creen objetos distintos, y se utilice una instancioa única. Recordemos que si tenemos varios
objetos, cada uno puede asignar valores distintos a sus variables.

Su estrucura en el archivo as (al que llamaremos variablesGlobales.as, el mismo nombre


que daremos a la clase)sería la siguiente:

package {

public class variablesGlobales {

// Aquí declaramos nuestras variables

public var miVariableTexto:String = "Hola";

public var miVariableNumero:Number = 100;

///

private static var instancia:variablesGlobales;

public function variablesGlobales() {

public static function variables():variablesGlobales {


if (!instancia) {

instancia = new variablesGlobales();

return instancia;

Es importante declarar nuestras variables como public var para que puedan ser
accedidas desde fuera.

Guardamos el archivo en la misma carpeta en la que estamos trabajando.

Ahora podemos acceder a enuestras variables con la siguiente sintaxis:

variablesGlobales.variables().nombreVariable

Por ejemplo:

trace(variablesGlobales.variables().miVariableTexto);

variablesGlobales.variables().miVariableNumero = 5;

LAS FUNCIONES
Una función es un conjunto de instrucciones aisladas del programa principal que cumplen
una tarea determinada y que tienen asociado un nombre o identificador.

Las principales ventajas de usar funciones son :

 Facilita la resolución de un problema ya que dividen el programa principal en


pequeños subprogramas que trabajan en conjunto, siguiendo el principio “divide y
vencerás” que consiste en dividir un problema complejo en partes mas sencillas y unir
las soluciones (simples y obvias) para resolver el problema principal.
 Facilita la revisión del código ya que proveen un nombre a un grupo de instrucciones,
entonces disminuye la necesidad de leer y comprender de nuevo el código para
determinar cual era el objetivo principal de las instrucciones que contiene la función.
 Promueve la reutilización de código, en las mayoría de los casos sin necesidad de
copiar y pegar, únicamente necesitamos llamar a la función por el nombre que le
hemos dado para reutilizar todas las instrucciones que envuelve la función.
Las componentes principales de una función son :

 Nombre o identificador
 Tipo de retorno
 Parámetros.
Nombre o identificador. Es el nombre que le damos a una función para poder referirnos a
ella, es decir para poder invocarla posteriormente las veces que la necesitemos.
Tipo de retorno. Este elemento puede o no definirse, según el propósito de la función.
Cuando se espera que una función “genere” un nuevo valor es necesario especificar el
tipo de este dato generado como el tipo de retorno, y este valor debe ser “expulsado” de
la función hacia el exterior en algún punto de ella que por lo general es en la última línea de
instrucciones de la función.
A este proceso de expulsar de la función el valor generado es conocido como retorno de la
función.

Si se desea que la función solo ejecute una serie de instrucciones sin generar un nuevo
valor, únicamente cumpliendo con las tareas que especifican las instrucciones que
encierrra, se dice que es una función de retorno vacio.

En algunos lenguajes se distingue a las funciones que retornan un valor llamándolas


funciones y las que no retornan valores llamándolas procedimientos, esto ocurre por
ejemplo en Visual Basic, pero en Actionscript 3 no se hace esta distinción explícitamente.

Parámetros. En algunos casos son necesarios uno o mas valores para que la función
pueda realizar sus tareas o bien para que pueda generar un nuevo valor, por ejemplo, para
crear una función que pueda determinar el area de un círculo, es necesario que “sepa” cual
es el radio de dicho círculo, entonces este dato debe enviarse a la función para que pueda
realizar las tareas necesarias para generar dicho cálculo.
Estos valores necesarios para la ejecución de la función se denominan parámetros de la
función.

Sintaxis para el uso de funciones en Actionscript 3.


Para definir una función usamos la siguiente sintaxis:
1 function identificador (param1 : TipoParam1 , param2 : TipoParam2)
: TipoDeRetorno {
2 //instrucciones a ejecutar;
3 }
Donde param1 y param2 son los valores que recibe la función, los cuales pueden ser
ninguno o tantos como sean necesarios.
Cada parámetro enviado debe tener el tipo de dato al cual pertenece aunque no es
obligatorio (eso representa TipoParam1 y TipoParam2), esto permite a Flex verificar
durante la compilación si los argumentos* que enviamos son del tipo adecuado para
manipularlos en la función y evitar asi un error grave durante la ejecución,
Si no especificamos el tipo del parámetro podremos enviar un argumento de cualquier tipo
de dato.

Ejemplos

Una función llamada decirHola que retorne la cadena “Hola Mundo”.


1 function decirHola() : String{
2 var saludo:String="Hola Mundo";
3 return saludo;
4 }
Notamos que el tipo de retorno para la función es String ya que el valor retornado es de
éste tipo.
Función que podemos usar de la siguiente forma:
1 var cadena : String = decirHola();
Entonces la variable cadena recibirá el valor retornado por la función decirHola( ).
Un ejemplo con el uso de parámetros:
1
function sumarEnteros(enteroA : int , enteroB : int) : int{
2 var suma : int = enteroA + enteroB;
3 return suma;
4 }
5 var entero1 : int = 4;
var entero2 : int = 5;
6
var respuesta : int = sumarEnteros (entero1 , entero2);
7
Una función que no necesita retornar un valor puede omitir la espeficación de su tipo de
retorno, por ejemplo:
1 function dibujarCirculo(panel : Sprite) {
2 var g : Graphics = panel.graphics;
3 g.beginFill(0x000000);
4 g.drawCircle(0,0,100);
5 g.endFill();
}
6
Podemos ver una función que recibe un objeto Sprite ( objeto de uso en Flash que
representa un objeto que se puede mostra en la pantalla y el cual no abordaremos ahora)
llamado panel, sobre el cual dibuja un círculo usando el API de dibujo de ActionScript3,
que tampoco abordaremos por ahora, el fin es ejemplificar una función que no retorna un
valor, únicame se límita a realizar las instrucción que se le especifican.
Contenedores y lista de visualización

Los contenedores
Hay algo que hay que tener absolutamente claro. No se puede ver algo, si no esta
adentro de un contenedor. El único elemento que no necesita de esto, es el escenario. Si
no tienes esto claro, fracasaras en AS3.

¿Pero como agregamos algo al contenedor?

addChild();
Todos los contenedores tienen un método llamado addChild que traducido es “Añadir
Niño”. Este es uno de los métodos mas importantes en AS3. En el siguiente código vamos
a crear un texto y vamos a ver como funciona addChild.

Código :

var miTexto:TextField = new TextField(); // Creo el campo de texto

miTexto.text = "Hola @#♦*•#"; // Escribo lo que quiero que diga

Si colocamos este código, no veremos nada en el escenario, porque no lo hemos


agregado a ningún contenedor. Ahora lo vamos agregar al contenedor Escenario

Código :

var miTexto:TextField = new TextField(); // Creo el campo de texto

miTexto.text = "Hola @#♦*•#"; // Escribo lo que quiero que diga

this.addChild(miTexto);

Si colocamos este código, vemos que en pantalla sale Hola @#♦*•#. Sencillo no?
Ahora Vamos a meter nuestro texto en un contenedor de tipo Sprite.
Código :

var miTexto:TextField = new TextField();

miTexto.text = "Hola @#♦*•#";

var miContenedor:Sprite = new Sprite(); // Creamos nuestro contenedor

this.addChild(miContenedor); // Agregamos

miContenedor.addChild(miTexto); // Agregamos el texto al contenedor

Si colocamos este código veremos que aparece nuestro Hola @#♦*•# en pantalla. Como
vemos en este código, hay que agregar también los otros contenedores al escenario, si
no hacemos esto, no serán visibles.

Tipos de contenedores
Para saber todas las características de cada tipo de contenedor lo mejor es ir a la
referencia de Adobe.

 Guía Stage o Escenario


 Guía Loader. Este objeto solo puede tener un hijo. El objeto que carga con el método
load.
 Guía Sprite
 Guía MovieClip
 Guía DisplayObjectContainer
 Guía DisplayObject
Cargando archivos

En Action Script 3 para cargar el archivo "archivo_a_cargar.swf" dentro del


archivo "principal.swf" en el movieclip llamado "mc_destino" se puede
utilizar este código:

var swf_Loader:Loader = new Loader();


// se crea un nuevo objeto del tipo Loader

var swf_archivo:String = "archivo_a_cargar.swf"


// se define el archivo a cargar
// se puede usar la notacion "./" "../" si el archivo está en otro directorio

var swf_descargar:URLRequest = new URLRequest(swf_archivo);


// se crea un nuevo objeto del tipo URLRequest

swf_Loader.load(swf_descargar);
// solicita el archivo con el método load del objeto Loader

mc_destino.addChild(swf_Loader);
// el archivo "archivo_a_cargar.swf" se carga dentro del archivo
"principal.swf"
// en el movieclip llamado "mc_destino"

En ActionScript 3 con estas líneas de código se carga el archivo


"archivo_a_cargar.swf" dentro del movieclip llamado "mc_destino".
(Dentro del archivo "principal.swf" previamente se debió crear un movieclip
en el stage/escenario y ponerle como nombre "mc_destino")

Cargando Información
La clase Loader de ActionScript 3.0 es una subclase de DisplayObject que se
utiliza para cargar y mostrar contenido externo. Para cargar el archivo SWF, se
utiliza el método load de la clase. El método load tiene un parámetro obligatorio:
una instancia de URLRequest con la dirección URL del contenido que debe
cargarse.
El código de ejemplo siguiente crea una instancia de Loader y carga un archivo
SWF externo denominado "myExternalMovie.swf."

1 var myLoader:Loader = new Loader(); // create a new instance of the Loader class
2 var url:URLRequest = new URLRequest("ExternalSWF.swf"); // in this case both SWFs are in the
3 same folder
myLoader.load(url); // load the SWF file
4 addChild(myLoader); // add that instance to the display list, adding it to the
5 Stage at 0,0
6
7 // (optional)
8 myLoader.x = 10; // move the loaded SWF 10 pixels to the right (from the left
9 edge)
myLoader.y = 175; // move the loaded SWF 175 pixels down from the top
10
11 // (optional) load a second external SWF file
12 var my2ndLoader:Loader = new Loader();
13 var url2:URLRequest = new URLRequest("ExternalSWF2.swf");
14 my2ndLoader.load(url2);
15 addChild(my2ndLoader); // optionally, you could put the 2nd SWF beneath
// the 1st by using addChildAt(my2ndLoader, 1);
16 // displacing the 1st SWF from position 1 to 2 in the display list
17
18 // (optional) scaling of the 2nd SWF file
19 my2ndLoader.scaleX = 2; // scale the SWF horizontally by 200%
20 my2ndLoader.scaleY = 2; // scale the SWF vertically by 200%

La URL del archivo SWF cargado puede ser relativa o absoluta. Consulte Rutas
relativas para obtener más información sobre cómo gestiona Flash Player las URL.
Para obtener más información sobre la clase Loader , consulte Loader en la
Referencia de lenguaje de ActionScript para la plataforma.
Las referencias a root, cuando están disponibles, siempre representan el objeto
de visualización de nivel más alto en la parte de la estructura de árbol de la lista de
visualización representada por dicho archivo SWF. (Para las imágenes, root hace
referencia al objeto Bitmap).
Nota: en ActionScript 3.0, no hay un equivalente para las
propiedades _lockroot ni _level de ActionScript 2.0. Consulte Fundamentos de la
programación de la visualización en la Guía del desarrollador de ActionScript 3.0.
EFECTOS SOBRE ANIMACION
Introducción
Si no te parecen suficientes las interpolaciones de forma y de
movimiento, y quieres realizar animaciones más complejas, puedes
combinar las interpolaciones de movimiento con los efectos y
transformaciones que se pueden realizar sobre los símbolos que las
componen y aplicar efectos sobre las mismas interpolaciones.
Una vez comprendidas todas las técnicas de este tema, estaremos en
disposición de realizar todo tipo de animaciones en Flash. Sólo
tendremos que poner un poco de imaginación porque, como hemos
visto y veremos, el programa nos facilitará enormemente el trabajo.
Con el panel de Propiedades podemos controlar los efectos y filtros,
pero también podemos usar el Editor de movimiento para controlar
gran parte de los efectos.

Efectos sobre la interpolación


Para describir todos los efectos que podemos aplicar sobre una
interpolación de movimiento previamente creada, sin necesidad de
tocar ningún símbolo, nos centraremos en el panel Propiedades. Si
seleccionamos un fotograma y un objeto perteneciente a una
interpolación, y abrimos el panel Propiedades, desde el botón de la
parte superior derecha, o bien desde el menú Ventana, Propiedades,
encontraremos las distintas propiedades aplicables a ese objeto en
ese fotograma. Las propiedades variarán según el tipo de
interpolación, según puedes ver en las siguientes imágenes
correspondientes a las propiedades de la interpolación de movimiento,
interpolación guiada e interpolación de forma:
En las interpolaciones de movimiento podemos darle un
nombre de etiqueta, nos ayudará a identificarla en la barra de tiempo.
Aparecerá a lo largo de todos los fotogramas que la componen.
Efectos sobre el símbolo interpolado

Ya vimos en temas pasados cómo aplicar efectos sobre instancias de


símbolos y vimos que se podía lograr efectos vistosos. No obstante,
cuando los efectos muestran su verdadera potencia es cuando el
símbolo forma parte de una animación.
Para explicar y demostrar las posibilidades de estos efectos vamos a
abrir el panel Propiedades, que nos mostrará, en el
desplegable Color los posibles efectos a aplicar si seleccionamos una
instancia de un símbolo cualquiera de nuestra película.
Podemos aplicar los efectos sobre cualquier símbolo de cualquier
fotograma de la animación, tanto sobre el fotograma inicial o el final
como en los intermedios. En este último caso, si se trata de una
interpolación clásica, deberemos convertir a fotograma clave aquel que
contenga la instancia y después aplicar el efecto. El efecto se irá
aplicando de forma gradual. De hecho, es frecuente utilizar
interpolaciones clásicas únicamente para aplicar efectos.
Para entender bien lo que sigue, es necesario controlar la aplicación de
efectos sobre instancias. Esto lo vimos en el Tema 9 y por eso
omitiremos detalles sobre cómo aplicar efectos concretos sobre
símbolos.
Efecto brillo
El efecto de brillo, como su propio nombre indica, nos viene muy bien
para simular el hecho de que algún objeto se encienda o brille, o por el
contrario se apague o pierda brillo.
En el ejemplo que tenemos a la izquierda, hemos intentado simular este
efecto. Para ello hemos creado un semáforo de luces intermitentes de
color ámbar.
Como se puede ver, las luces se encienden y apagan progresivamente
de manera alternada. Para conseguir esto hemos creado una
interpolación para cada luz, formada por tres fotogramas claves. El
tercero lo hemos colocado justo en el medio de la secuencia de
fotogramas. A la primera luz y a la última le hemos dado el mismo valor
de brillo, y en la del medio le hemos dado un valor más alto o más bajo
según fuera el símbolo de abajo o el de arriba.
Como los movimientos de las luces son distintos e independientes los
hemos colocado en distintas capas.
 Para la luz superior los valores de brillo fueron: 0 para el primer
fot. clave, -46 para el central y 0 para el del medio.
 Y en la luz inferior al contrario: -46 para el primer fot. clave, 0 para
el central y -46 para el del medio.
Efecto tinta
El efecto de tinta, tiene un amplio marco de posibilidades de uso. Es
muy usado en textos y en botones, por ejemplo haciendo que cambien
progresivamente de color al pasarles el ratón por encima o simplemente
efectos de cambio de color en presentaciones.
El tintar colores supone un toque alegre y muy vistosos en las
presentaciones y si se usan varios efectos, combinados
adecuadamente, dota de un ritmo rápido a la animación, como una
explosión de color que sorprenda al receptor de la película.
Otro interesante uso de este efecto es simular la proyección de una luz
de color sobre un objeto que se va acercando al foco. Veamos un
ejemplo de esto.

Vemos como al acercarse el avión a la luz roja del Sol, éste lo ilumina
con una luz roja.
Hemos aplicado a la instancia del avión del último fotograma de su
interpolación de movimiento un efecto de tinte rojo con una intensidad
del 60%. Lo mismo hemos hecho en el centro del Sol pero con dos
fases, poniendo en el fotograma central un efecto de tinte granate del
25%.
La corona solar es simplemente una interpolación de forma en cuatro
fases.
Efecto transparencia (Alfa)
Este es probablemente el efecto más utilizado debido a la versatilidad
del hecho de controlar el grado de visibilidad de los objetos. Podemos,
por ejemplo, simular un foco apuntando a un escenario o, lo más común,
hacer aparecer objetos de la nada y también hacer que se desvanezcan
poco a poco.

You might also like