Beruflich Dokumente
Kultur Dokumente
Figura 1
Figura 2
Crear un objeto cuyo color sea parcialmente transparente, de modo que se vean los objetos
de detrs.
Rectngulo Azul
El efecto alfa trabaja de forma que si situamos cualquier objeto o imagen detrs de l,
podemos ver como un efecto de transparencia que mostrar parte de lo que se encuentre
detrs de nuestro relleno.
3. Una vez hecho esto, nos fijamos en el Panel de Muestras, que se encuentra en el
lateral derecho del rea de herramientas y seleccionamos el color que nos guste.
Para modificar el color del interior del valo tambin podemos seleccionar un color
directamente haciendo clic sobre el Panel de Colores existente en el Panel de
herramientas junto a la imagen del "Bote de Pintura". O si deseamos modificar el
borde, sobre el Panel existente junto al "Lpiz".
.
8. Cambia el espaciado entre caracteres del texto a 2 escribindolo en la opcin
Espaciado.
9. Por ltimo cambia el tamao del texto a 30 y ponlo en Negrita utilizando los
controles de Tamao y Estilo.
Fjate que los objetos ahora se han movido al lado contrario. Alinendose su borde
izquierdo con el borde izquierdo del escenario.
Respecto a los fotogramas Sobre y Zona activa, los dejaremos tal y como estn puesto
que no deseamos que haga nada mientras no pulsemos el botn y el rea de accin es la que
comprende nuestro rectngulo.
12. Ahora, crearemos trayectorias curvas. Sobre el escenario, haz clic y arrastra la gua
punteada para crear curvas.
13. Como podemos comprobar, el clip se desplaza ahora en siguiendo trayectorias
curvas pero pasando por las posiciones clave indicadas.
Vamos a separar el texto en los siguientes bloques: "a", "u", "la" y "Clic".
Podramos cambiar los bloques si quisiramos dar otro efecto en concreto.
5. Seleccionamos dichos bloques y los convertimos a smbolos, dndoles un nombre
identificativo y el Tipo Grfico, ya que no los animaremos "internamente".
6. Creamos 5 nuevas capas, una por cada bloque que hemos creado.
8. Hacemos clic con el botn derecho sobre el nico fotograma con elementos que
tenemos en la lnea de tiempo y en el men emergente seleccionamos Copiar
13. Extendemos la imagen los ltimos fotogramas de cada capa hasta que ocupen el
fotograma 30 (Botn derecho Insertar Fotograma Clave).
14. Exceptuando la capa "Clic" seleccionamos el primer fotograma de cada
interpolacin y aumentamos el tamao del bloque que contiene.
15. Movemos ahora fuera del escenario el bloque "Clic".
16. An en esta capa, hacemos clic con el botn derecho sobre el fotograma 24 y
seleccionamos Insertar Fotograma Clave.
17. En este fotograma recin creado reducimos el ancho del bloque de texto y lo
colocamos junto a la ltima "a".
Y ya tenemos la animacin creada. Como vemos hemos utilizado todo tipo de tcnicas de
interpolacin, aunque todava puede complicarse ms como veremos ms adelante.
11. Introduce ahora un -100 en la casilla Aceleracin (dentro), para hacer que aumente
progresivamente su velocidad.
El resultado sera el siguiente:
8. Arrastra otro smbolo y colcalo al pie del Escenario (este ser el que har que rote
el elemento).
9. Redimensinalo si lo crees necesario, dale un nombre de instancia y convirtelo a
botn. Nosotros lo hemos llamado btn_rotarEstrella.
10. Repite estos pasos para cada una de las formas que hayas creado, utilizando los
nombres de instancia apropiados.
11. Una vez ya estn todos los botones en el Escenario pasaremos a escribir el cdigo
asociado. Para ver cmo hacerlo, vamos a cargarlo los archivos publicados (swf)
desde el cdigo.
12. Crea una nueva capa pulsando el botn Insertar Capa
.
13. En el fotograma 1 de la nueva capa escribe lo siguiente en el Panel Acciones, que
afectar al smbolo estrella:
?
1
2
3
4
5 estrella.contentLoaderInfo.addEventListener(Event.COMPLETE,
6 insertarEstrella);
//Utilizamos este evento para asegurarnos de que se ha cargado
7 completamente
8 //antes de agregarlo a la escena
9 function insertarEstrella(e:Event):void {
10estrellaMC = e.target.content; //Almacenamos el elemento que
11produce el evento
//en nuestro movie clip
12estrellaMC.visible = false; //Lo ocultamos para que no se vea por
13defecto
14estrellaMC.x=100;
15estrellaMC.y=80; //Le damos la posicin inicial que queramos
addChild(estrellaMC) as MovieClip;//Aadimos el archivo cargado a
16la escena
17
//An no se ver porque visible=false
18}
19
20btn_mostrarEstrella.addEventListener(MouseEvent.MOUSE_UP,
21mostrarOcultarEstrella);
//Detectamos cuando se pulsa el botn para mostrar/ocultar el
22elemento
23function mostrarOcultarEstrella(e:Event):void {
estrellaMC.visible=! estrellaMC.visible;
24
//Al negar una propiedad booleana como sta, la invertimos.
//por lo que cada al pulsar el botn se mostrar si est
oculta o
//o se ocultar si est visible
}
14. Guarda el proyecto y prubalo (Control Probar pelcula) para ver que funciona.
15. Ahora escribiremos el cdigo necesario para que al pulsar el otro botn
(btn_rotarEstrella) el elemento gire:
?
btn_rotarEstrella.addEventListener(MouseEvent.CLICK,
1girarEstrella);
2function girarEstrella(event):void {
//Para que gire, aumentamos la propiedad rotation
3
estrellaMC.getChildAt(0).rotation+=15;
4
//Utilizamos getChildAt porque en nuestro caso no queremos que
5rote todo
6
//el SWF, slo el elemento que pusimos dentro como un smbolo,
7que al ser
//el nico hijo, est en la posicin 0
8
}
17. Una vez terminado prueba la pelcula desde Control Probar pelcula.
?
1//cdigo para aadir el filtro
y escribe lo siguiente en su lugar:
?
1import flash.filters.DropShadowFilter;
Esto har que el filtro se importe a la pelcula. Normalmente no es necesario porque
trabajamos en el panel de acciones, pero si lo necesitamos si trabajamos, por
ejempolo, en un archivo as externo.
4. Despues de esto escribe:
?
1var sombra:DropShadowFilter = new DropShadowFilter();
Hemos creado una variable llamada sombra que es un filtro de Sombra.
5. Como tenemos que asociar el cambio de efecto al botn aplicar, creamos la funcin
que controla al evento:
?
1btn_aplicar.addEventListener(MouseEvent.CLICK, cambiarSombra);
2function cambiarSombra(event):void {
3
4}
6. Luego accederemos a las propiedades de sombra y le daremos los valores que hay
en los campos del formulario. Todo esto, dentro de la funcin que se ejecutar al
pusar el botn:
?
1
2
3
4
5
6
7
8
sombra.distance = distance_stp.value;
sombra.angle = angle_stp.value;
sombra.color = 0x000000;
sombra.alpha = alpha_stp.value;
sombra.blurX = blur_stp.value;
sombra.blurY = blur_stp.value;
sombra.strength = strength_stp.value;
sombra.quality = quality_cmb.selectedItem.data;
sombra.inner = inner_chk.selected;
sombra.knockout = knockout_chk.selected;
9 sombra.hideObject = hideObject_chk.selected;
10
11
7. Finalmente asociamos el filtro sombra que hemos creado a la propiedad filters del
clip, tambin dentro de la funcin:
?
1pez.filters = [sombra];
Hemos creado una pelcula donde podemos cambiar las propiedades de un filtro
dinmicamente.
17. Desplzate hasta el segundo 42.280 y crea otro punto de referencia llamado
carrera1fin de Tipo Evento.
18. Dale un parmetro pulsando el botn
en la lista de abajo, y dale el nombre
fotograma y el valor win.
19. Desplzate hasta el segundo 58.159 e inserta otro punto de referencia. Llmalo
carrera2 y dale Tipo Navegacin.
20. Cambia el cabezal a la posicin 58.160 y crea un punto de referencia llamado
carrera2inicio de Tipo Evento.
21. Dale un parmetro llamado fotograma y con valor ready.
22. Desplaza el cabezal al segundo 1:34.600, crea all un ltimo punto de referencia.
23. Dale el nombre carrera2fin y el Tipo Evento.
24. Crea un parmetro para este punto de referencia (pulsando el botn
), llmalo
fotograma y dale el valor lose.
25. Ya hemos terminado, pulsamos Aceptar para volver a la pantalla inicial.
26. Solo nos queda pulsar en Iniciar Cola, esto guardar nuestro vdeo con los puntos de
referencia ya insertados en l.
27. Ahora buscamos el vdeo que acabamos de crear en nuestra pantalla de Flash, y
continuamos importndolo.
Hemos importado un vdeo preparado para navegar por l y que nos pasar parmetros en
determinados puntos.
34
izquierda = false;
35
}
36 }
37}
4. Estaremos listos, podrs previsualizar la pelcula pulsando Ctrl+Enter.
Como puedes observar el cdigo es idntico al anterior pero cambiando las sentencias de
salto de fotograma por cambios de rotacin en el clip.
btn_aadir.addEventListener(MouseEvent.CLICK, aadir);
function aadir(event):void {
if (contenedor.numChildren<30) { // si el contenedor contiene
menos de 30 estrellas
//podemos aadir ms
var miEstrella:estrella=new estrella; // creamos una estrella
en miEstrella
var posY:Number; //creamos una variable para calcular la
posicin Y
4. Ahora haremos que la nave se oriente hacia la pelota en cada momento (realmente
lo que haremos ser asociar el cdigo al evento onEnterFrame para que se refresque
a cada vuelta al fotograma). Abre el Panel Acciones y escribe los siguiente:
?
1nave.addEventListener(Event.ENTER_FRAME, orientarHaciaPelota);
2function orientarHaciaPelota(event):void {
//A partir de las coordenadas de cada objeto, calculamos el
3ngulo
4
var radianes:Number = Math.atan2((pelota.y-nave.y), (pelota.xnave.x));
5
//Lo convertimos se radianes a grados
6
var grados:Number=Math.round(radianes*180/Math.PI);
7
//Y rotamos la nave esos grados
8
nave.rotation=grados;
9}
Lo que hemos hecho en un principio es, como vimos en la teora, es calcular el
ngulo que hay entre las coordenadas de la pelota y las de la nave. El ngulo
obtenido, convertido en grados, ser lo que hay que rotar (rotation) la nave para que
apunte a la pelota.
Nota: Observa que inicialmente la nave est orientada a la derecha, as que no har falta
solventar el desfase de ngulo.
Este cdigo se parece mucho al que vimos en la teora. Lo nico que hacemos es
obtener qu tecla se ha pulsado y en funcin de la direccin, activamos una variable
booleana que indica que se ha de mover el objeto en esa direccin. Cuando se suelte
la tecla, hacemos lo mismo para desactivar la variable.
3. Vamos ahora con el movimiento. Lo haremos en el evento "enterFrame" del objeto
que se mueve. Aade el siguiente cdigo:
?
//En el enterFrame del clip, comprobamos la posicin futura, y si
no hay impacto, movemos
miClip.addEventListener(Event.ENTER_FRAME, mover);
function mover(event):void {
//Utilizamos un objeto rectngulo para que nos sea ms cmodo
acceder a las propiedades
var rect:Rectangle= miClip.getBounds(stage);
if (bajar) { //Comprobamos la colisin abajo - izquierda y abajo
- derecha, aumentando abajo
if (!(fondo.hitTestPoint(rect.left, rect.bottom+velocidad,
true) || fondo.hitTestPoint(rect.right, rect.bottom+velocidad,
true))) {
miClip.y+=velocidad; //Si no hay colisin, cambiamos la
posicin del objeto.
}
}
if (subir) { //Comprobamos la colisin izquierda - arriba y
derecha - arriba, aumentando arriba
if (!(fondo.hitTestPoint(rect.left, rect.top-velocidad,
true) || fondo.hitTestPoint(rect.right, rect.top-velocidad, true)))
{
miClip.y-=velocidad;
}
}
if (izquierda) { //Comprobamos la colisin izquierda - arriba e
izquierda - abajo, aumentando izquierda
if (!(fondo.hitTestPoint(rect.left-velocidad, rect.top,
true) || fondo.hitTestPoint(rect.left-velocidad, rect.bottom,
true))) {
miClip.x-=velocidad;
}
}
if (derecha) {//Comprobamos la colisin derecha - arriba y
derecha - abajo, aumentando derecha
if (!(fondo.hitTestPoint(rect.right+velocidad, rect.top,
true) || fondo.hitTestPoint(rect.right+velocidad, rect.bottom,
true))) {
miClip.x+=velocidad;
}
}
}
Parece un poco complicado pero en esencia es ms largo, pero sencillo. Para cada uno de
los movimiento (arriba, abajo, izquierda y derecha) tendremos que evaluar si se produce
Ejercicio
1. Abre el archivo bolas.fla que encontrars en la carpeta ejercicios\bolas\.
2. Vamos a exportar el smbolo de la bola para AS. En la biblioteca, haz clic derecho
sobre el smbolo bola y elige Propiedades.
3. Marca la opcin Exportar para ActionScript, y en el nombre de la Clase asgnale
ClaseBola.
4. Vamos a aadir bolas con el botn btn_agregar_bolas. Las mostramos utilizando un
contenedor. Escribe el siguiente cdigo en el primer fotograma, en el panel
Acciones:
?
var miContenedor:Sprite = new Sprite;//Aqu mostraremos las bolas
addChild(miContenedor); // Lo agregamos a la escena
btn_agregar_bola.addEventListener(MouseEvent.CLICK, agregarBola);
function agregarBola(event):void {//Funcin que aade bolas
var bola:ClaseBola = new ClaseBola(); //Creamos un nuevo objeto
ClaseBola
miContenedor.addChild(bola); //Y lo agregamos al contenedor
}
6. Nos pedir que le demos un nombre a la clase, que tendr que ser CaseBola, el
nombre de clase que le dimos a nuestro smbolo. Al aceptarlo, se crear un cdigo
como el siguiente:
?
package {
public class ClaseBola {
public function ClaseBola() {
// constructor code
}
}
}
7. De momento, esta clase no tiene ningn mtodo ni propiedad, podemos decir que no
hace nada. No vamos a crear la clase desde la anda. Para empezar lo que queremos
hacer es aadir funcionalidades a la clase MovieClip, pero tener tambin sus clases
y mtodos. Esto lo conseguimos haciendo que nuestra clase extienda (o ample) a la
clase predefinida de ActionScript MovieClip. Modifica el cdigo para que quede
as:
?
package {
//Aqu importaremos lo que nos haga falta
import flash.display.MovieClip;
public class ClaseBola extends flash.display.MovieClip {
public function ClaseBola() {
// constructor code
}
}
}
Observa que hemos dado a la clase el mismo nombre (ClaseBola) que indicamos al
exportar el smbolo a AS. Adems hemos indicado que la nueva clase extender
(extends) a la clase MovieClip. Esto quiere decir que nuestra clase tendr todos los
mtodos y propiedades de los MovieClip, adems de los que nosotros creemos.
Como emplearemos la clase MovieClip, debemos de importarla.
8. Guarda el archivo como ClaseBola.as, en la misma carpeta que el archivo .fla. Es
muy importante guardarlo con el nombre de la clase.
Ahora, podras volver a probar la pelcula, pero no vers cambios. Como an no
hemos definido mtodos propios, nuestra case hace lo mismo que la clase a la que
extiende.
package {
//Aqu importaremos lo que nos haga falta
import flash.display.MovieClip;
import flash.geom.Rectangle;//Como usaremos un Rectangle, hay
//que importarlo
public class ClaseBola extends flash.display.MovieClip {
//PROPIEDADES
var angulo:Number;//ngulo inicial, ser aleatorio
private var direccionX:Number = 1; //Cambiando el signo, podremos
private var direccionY:Number = 1; //invertir la direccin
private var limites:Rectangle; //El rea en el que rebotan las
pelotas
var velocidadMaxima:Number = 45; //Mx. velocidad a la que podemos
acelerar
public static var velocidadBase:Number = 10; // Velocidad inicial
//MTODOS
public function ClaseBola(miFondo:MovieClip) {
//Mtodo constructor. Se ejecutar con el new
limites = miFondo.getBounds(stage); //Tomamos las dimensiones
del fondo
angulo = num_aleatorio(0,180); //Calcualmos un ngulo
aleatorio
angulo = Math.PI/180*angulo; //Y lo pasamos a radianes
this.y = limites.top+limites.height/2; //Calculamos la
posciin inicial
this.x = limites.left+limites.width/2; //centrada en el fondo
//Y utilizamos el evento 'enterFrame' para mover la pelota
this.addEventListener(Event.ENTER_FRAME, moverPelota);
}
public function moverPelota(event) {
//Impedimos que se pueda superar la velocidad mxima
if (velocidadBase > velocidadMaxima) {
velocidadBase = velocidadMaxima;
}
var futuraPosicion:Number;
Hemos empleado tres mtodos: el llamado mtodo constructor, que para que sea tal debe
de tener el mismo nombre que la clase, se encarga de iniciar las propiedades: calcula de
forma aleatoria el ngulo, y se encarga de asignar el movimiento en el evento enterFrame.
El segundo mtodo, moverPelota, bsicamente se encarga de calcular si al mover la pelota,
esta saldr de los lmites horizontales o verticales, y de ser as, invierte la direccin en ese
eje.
El ltimo mtodo ya lo conocemos. num_aleatorio se encarga de calcular un nmero
aleatorio dentro de un rango.
Guarda el archivo de la clase antes de intentar probarlo.
Tenemos que realizar un cambio en el archivo bolas.fla. Volvemos a la pelcula, al
cdigo del fotograma 1. Cambia el cdigo que crea las bolas (var bola:ClaseBola=new
ClaseBola();) por var bola:ClaseBola=new ClaseBola(fondo); ya que en la
definicin de la calse hemos especificado que al crear el objeto le pasaremos como
argumento el MovieClip que hace de fondo, para que tome sus dimensiones. fondo es el
nombre de la instancia del smbolo.
Prubalos pulsando Ctrl + Intro. Observa cmo puedes aadir bolas, y rebotan por las
paredes.
Ahora vamos a eliminar las bolas. Crea el siguiente mtodo en la clase ClaseBola:
?
public function borrar() {
//Antes de borrar, quitamos sus eventos
this.removeEventListener(Event.ENTER_FRAME, moverPelota);
//reproducimos la animacin
this.gotoAndPlay(2);
//al finalizar la animacin, lanzar el evento 'borrame'
//El cdigo que lo hace est en la lnea de tiempo del clip
}
Lo que hace este mtodo es quitar el evento enterFrame, ya que es muy recomendable
quitar sus eventos antes de eliminar un elemento. Despus, va al segundo fotograma de la
bola, lo que inicia una animacin que la hace desaparecer. Cuando llegue al ltimo
fotograma, lanzar el evento 'borrame', porque as est programado en el smbolo bola.
Ahora, slo tenemos que llamar a este mtodo al pulsar el botn btn_quitar_bola. Lo
haremos sobre la ltima bola aadida al contenedor. En la pelcula, en la capa Acciones
escribe el cdigo:
?
btn_quitar_bola.addEventListener(MouseEvent.CLICK, quitarBola);
function quitarBola(event):void {
if (miContenedor.numChildren) { //Si hay bolas quitamos una
//Convertimos el ltimo elemento en un objeto ClasBola y llamamos
a su
//mtodo borrar()
ClaseBola(miContenedor.getChildAt(miContenedor.numChildren1)).borrar();
}
}
Observa que empleamos ClaseBola(objeto) para convertir un objeto genrico a nuestra
En cambio, declararla como private limita su uso a slo dentro de la clase, no podemos
acceder a ella poniendo objeto.propiedad. Normalmente las propiedades son independientes
para cada objeto, salvo si, como en este caso, la declaramos como static. Esto hace que si la
cambiamos, cambie para todos los objetos creados de la clase, y que podamos utilizarla
directamente con en el nombre de la clase, sin tener que crear un objeto especfico.
Guarda los archivos y prubalo.
Como puedes ver calculamos el ngulo de la bola respecto al centro de la pantalla, le damos
un desajuste de 5 grados para que parezca ms real.
En cuanto a la escala puedes ver que va en relacin al recorrido.
El movimiento de la bola lo hemos sacado de la frmula de la espiral de Arqumedes.
Podrs encontrar informacin sobre ella en la red.
1.
2.
3.
4.
Identifica todos los tipos de fotogramas existentes y a qu tipo pertenecen. Recuerdas para
qu sirve cada uno?
Ejercicio 5: Paneles
1.
2.
3.
4.
5.
Y as las Capas:
Fijmonos en que no estn los puntos negros en los Fotogramas Clave ni los cuadrados
blancos en lo fotogramas normales.
Esto se debe a que no hay nada dibujado en dichos fotogramas.
si probamos a insertar algo en cada par de fotogramas, inmediatamente obtendremos esto:
Ejercicio 5: Paneles
1.
2.
3.
4.
5.
2. Cmbiale los colores. Por ejemplo, los colores de la bandera olmpica (azul, negro,
rojo, amarillo y verde)
3. nelos de modo que parezcan los aros olmpicos.
Ejercicio 2: Saturno
1. Dibuja un valo
2. Convierte su color de relleno un degradado de verde oscuro a verde claro (por
ejemplo).
3. Crea el aro que le rodea.
4. Une los 2 objetos para que parezca el planeta Saturno
6. Ahora mueve cada aro hasta la posicin deseada. Para mover un objeto, selecciona
la Herramienta Seleccin, haz clic en el aro que quieras mover y arrstralo. Para
movimientos precisos, puedes utilizar las teclas con flechas.
Ejercicio 2: Saturno
Vamos a dibujar un planeta parecido a Saturno
1.
2.
3.
4.
5.
6. Pulsamos en
y seleccionamos los colores que
deseemos, (podemos aadir tantos colores como queramos y probar su efecto).
7. Dibujamos el anillo del planeta, por ejemplo creando otro valo con la forma
adecuada. No lo dibujes sobre el planeta.
8. Tenemos que cambiar la forma de uno de los 2 para que tenga la forma deseada. Por
ejemplo, borramos parte del planeta seleccionndola de forma rectangular y
pulsando la tecla Suprimir tal y como vimos en el paso 3.
Ejercicio 2: Selecciones
1. Dibuja 5 valos. Dales el color de relleno y borde que quieras (elige un relleno que
no sea transparente
)
2. Selecciona 3 de ellos usando la tecla SHIFT.
3. Selecciona 3 de ellos usando la Herramienta Seleccin (Flecha).
4. Selecciona 3 nicamente los bordes de 3 de ellos.
Ejercicio 4: Grupos
1. Agrupa los 4 objetos del ejercicio anterior en un nico grupo.
2. Cambia su posicin (colcalos, por ejemplo, en el centro de la pelcula).
3. Desagrpalos.
Si no tienes muy claro cmo realizarlo, Aqu te ayudamos.
Ejercicio 2: Selecciones
El primer apartado nos pide crear 5 valos y seleccionar 3 de ellos con la tecla SHIFT.
1. Seleccionamos los colores que queramos en el Panel Muestras o en el Panel Color,
hacemos clic en la Herramienta valo (que aparece agrupada con la herramienta
rectngulo) y dibujamos 5 valos.
2. Hacemos doble clic en el relleno del primer crculo (doble clic para seleccionar
tanto el Relleno como el borde).
3. Ahora pulsamos la tecla SHIFT y sin soltarla, hacemos doble clic en otros 2 crculos
cualesquiera.
Ahora hacemos lo mismo usando la Herramienta Seleccin (Flecha), como pide el
segundo apartado.
1. Hacemos clic en una zona del escenario que nos permita capturar 3 crculos.
2. Arrastramos el ratn hasta crear un rea que envuelva completamente a 3 de los 5
crculos.
3. Si quedara alguna parte del crculo fuera de la seleccin, basta con usar la tecla
SHIFT para aadirlo a la seleccin actual.
Ahora se nos pide seleccionar nicamente los bordes de 3 de ellos.
1. Hacemos clic en el borde del primer valo (si hiciramos 2 clics se seleccionaran
todos los bordes del mismo color que estn en contacto con el borde sobre el que
hacemos clic).
2. Mantenemos pulsada la tecla SHIFT y repetimos el proceso con 2 valos ms.
Nota: Si en vez de valos hubieran sido rectngulos, hubiera hecho falta hacer 2 clics en el
borde de cada rectngulo para que este quede totalmente seleccionado. Comprubalo tu
mismo.
Ejercicio 4: Grupos
La primera parte del ejercicio nos pide Agrupar un conjunto de elementos (que ya
tenemos).
1. Los seleccionamos todos del modo que prefiramos.
2. Hacemos clic en el Men Modificar Agrupar
La segunda parte del ejercicio nos pide Desagrupar el conjunto de elementos que
acabamos de agrupar.
1. Seleccionamos el Grupo haciendo clic en l.
2. Hacemos clic en el Men Modificar Desagrupar
y
y
1. Crea el nuevo documento con con Archivo Nuevo, y elige ActionScript 3.0.
2 Crea los pasos necesarios para crear la siguiente animacin utilizando una mscara en
movimiento.
3. Haz que cambie de forma y vaya de un lado a otro del escenario, dando la sensacin
de que est reptando.
4. Gurdalo como babosa.fla.
1.
2.
3.
4.
7. Para la primera capa, haz clic derecho entre los fotogramas 10 y 19 y elige Crear
interpolacin clsica.
8. Para la primera capa, haz clic derecho entre los fotogramas 30 y 39 y elige Crear
interpolacin clsica.
9. Repite los pasos 8 y 9 con la segunda capa.
10. Prueba la animacin.
quality: indica la calidad de reproduccin de la pelcula (como hemos visto en este tema,
esta viene determinada por la velocidad y el suavizado o calidad de imagen) y sus posibles
valores pueden ser los all
loop: Indica si se repetir en bucle.
play : indica si se repoducir automticamnete la pelcula
scale: Indica si el tipo de escala.
wmode: Indica el modo de ventana.
devicefonts: Indica si la opcin fuente de dispositivo est activa.
17. Ahora crearemos el movimiento de la hoja. Para ello crearemos un clip de pelcula
que representar la hoja. Haz clic en Nuevo Smbolo (al pie de la Biblioteca) y dale
el nombre hoja. Selecciona Clip de pelcula y pulsa el botn Aceptar.
18. Selecciona la herramienta Rectngulo
en las pginas. Lo que haremos ser escuchar esos eventos, y cuando se produzcan,
ir a la etiqueta correspondiente de hoja_movimiento para simular el movimiento.
51. Haz doble clic sobre el smbolo hoja_movimiento para acceder a su lnea de tiempo.
52. En el primer fotograma de la capa acciones, introduce el siguiente cdigo:
?
stop();
var vista:Number=0;
var
hojasIzquierda:Array=["","contenido_actualidad.swf","contenido_depo
rtes.swf",
"contenido_naturaleza.swf","contenido_ultima.swf"];
var
hojasDerecha:Array=["contenido_portada.swf","contenido_ciencia.swf"
,
"contenido_espectaculos.swf","contenido_politica.swf",""];
Aqu hemos parado la pelcula y hemos definido las variables que utilizaremos en el
resto de la pelcula.
En la variable vista almacenamos el momento en el que nos encontramos, y en los
arrays hojasIzquierda y hojasDerecha introducimos los archivos SWF que
deberemos cargar. Para ello hemos tenido en cuenta la siguiente tabla:
vista
hojasIzquierda
hojasDerecha
portada
actualidad
ciencia
deportes
espectaculos
naturaleza
politica
ultima
enPagina.visible = true;
var loader:Loader;
loader = new Loader();
loader.load(new URLRequest(archivo));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
insertar);
function insertar(event):void {
enPagina.addChild(loader);
}
} else {
enPagina.visible=false;
}
}
Lo que hace esta funcin es utilizar un objeto Loader para cargar un archivo que
indicamos en el parmetro archivo y mostrarlo en la pgina que le indiquemos en
enPagina. Adems, si archivo est vaco, oculta la pgina.
54. Por ltimo, en este mismo fotograma, cargamos la primera pgina para que no
quede la pgina vaca. Lo hacemos llamando a la funcin que hemos definido:
?
cargarSWF(pagina, hojasDerecha[vista]);
Con esto haremos que en el smbolo pagina (que se encuentra sobre los smbolos
pagina_izquierda y pagina_derecha) se cargue la primera hoja del peridico.
Recuerda que la variable vista todava tiene el valor 0.
55. Selecciona el fotograma 2 y escribe lo siguiente en el Panel Acciones:
?
with (parent) {
cargarSWF(this.parent.pagina_derecha, hojasDerecha[vista+1]);
}
cargarSWF(pagina, hojasDerecha[vista]);
?
cargarSWF(pagina, hojasIzquierda[vista+1]);
vista++;
stop();
with (parent){
cargarSWF(this.parent.pagina_derecha, hojasDerecha[vista]);
}
Tamben debers establecer el orden de tabulacin de los objetos y el botn por defecto.
Adems, debers darle funcionalidad al botn Reset y Enviar. El primero limipando los
datos del formulario y el segundo recogiendolos validndolos y enviandolos a un archivo
php.
El validador del email deber comprobar que la direccin esta correctamente escrita (para
ello utiliza funcin indexOf y lastIndexOf).
Si no tienes muy claro cmo realizarlo, Aqu te ayudamos.
Microsoft
Microsoft
Microsoft
Microsoft
Excel
Access
PowerPoint
Outlook
21. Ahora pasaremos a crear las acciones. Para ello creamos una nueva capa haciendo
clic en el botn Insertar capa
en la lnea de tiempos y la llamamos acciones.
22. Seleccionamos el fotograma 1 de la capa acciones y abrimos el Panel Acciones
(Ventana Acciones).
23. Al principio del todo escribimos:
?
1stop();
2System.useCodepage = true;
Paramos la animacin en la primera lnea, no necesitamos que haga nada ms
porque no existen ms fotogramas. Si no lo hicisemos estara reproducindose todo
el rato el fotograma 1 una vez detrs de otra.
Con la segunda lnea hacemos que Flash utilice la pgina de cdigos tradicional del
sistema operativo en el que se ejecuta el reproductor para que los acentos y ees que
escribamos se enven correctamente al archivo php que enviar el formulario por
mail.
24. Ahora escribe lo siguiente:
?
nombre_txt.tabIndex = 1;
apellidos_txt.tabIndex = 2;
mail_txt.tabIndex = 3;
producto_cmb.tabIndex = 4;
buscadores_rdo.tabIndex = 5;
publicidad_rdo.tabIndex = 6;
otros_rdo.tabIndex = 7;
otros_txt.tabIndex = 8;
info_chk.tabIndex = 9;
reset_btn.tabIndex = 10;
enviar_btn.tabIndex = 11;
import fl.managers.FocusManager;
var def:FocusManager = new FocusManager (this);
def.defaultButton = enviar_btn;
nombre_txt.stage.focus=nombre_txt;
Esto har que se establezca el orden de tabulacin. Las ltimas lneas establecen el
botn Enviar como el botn por defecto y colocan el foco en el campo Nombre.
25. Seguimos con:
?
reset_btn.addEventListener(MouseEvent.CLICK, escuchadorLimpiar);
function escuchadorLimpiar(event) {
nombre_txt.text="";
apellidos_txt.text="";
mail_txt.text="";
producto_cmb.selectedIndex=0;
buscadores_rdo.selected=true;
otros_txt.text="";
otros_txt.editable=false;
info_chk.selected=true;
salida_txt.text="";
}
Para limpiar los campos cuando se pulse el botn Reset. Hemos creado un
escuchador asociado al botn reset_btn. Dentro del evento click inicializamos todos
los campos a sus estados iniciales.
26. Despus escribimos:
?
otros_rdo.addEventListener(Event.CHANGE, escuchadorOtros);
function escuchadorOtros(event) {
if (otros_rdo.selected) {
otros_txt.editable=true;
otros_txt.stage.focus = otros_txt;
} else {
otros_txt.text="";
otros_txt.editable=false;
}
}
}
//Funcin para vereificar el correo
function esMail(mail:String) {
if
(mail.indexOf("@")>0&&mail.indexOf("@")==mail.lastIndexOf("@")) {
if
(mail.lastIndexOf(".")>mail.indexOf("@")+1&&mail.lastIndexOf("."))
{
return true;
} else {
return false;
}
} else {
return false;
}
}
//Funcin si s enviado
function enviado( e:Event ):void {
escuchadorLimpiar();
salida_txt.text="Mensaje enviado!";
}
//Funcin si no s enviado
function erroNoEnvio( e:IOErrorEvent ):void {
salida_txt.text="Error intenta nuevamente.";
}
Utiliza el archivo fuente filtros.fla que encontraras en la carpeta ejercicios/filtros del curso.
Como ya hemos visto, averiguar los filtros que afectan a un clip es realmente complicado,
debers idear una forma para poder gestionarlos y mantener los que estn activos cada vez
que se pulse uno de los botones.
No debers reproducir el aspecto de los filtros, puedes personalizarlos como ms te guste.
Si no tienes muy claro cmo realizarlo, Aqu te ayudamos.
5. Ahora, para cada botn deberemos creamos la funcin que alterna la variable que
indica si est activo. Para ello la negamos. Despus llamamos a la funcin
mostrarFiltros, que es la que se encarga de aplicar los filtros al elemento.
?
1
2
3
4
5
6
7
8
9
1
0
1
1
1
sombra_btn.addEventListener(MouseEvent.CLICK,aplicarSombra);
function aplicarSombra(event:MouseEvent):void {
filtroSombra=! filtroSombra;
mostrarFiltros();
}
desenfocar_btn.addEventListener(MouseEvent.CLICK,aplicarDesenfoca
r);
function aplicarDesenfocar(event:MouseEvent):void {
filtroDesenfocar=! filtroDesenfocar;
mostrarFiltros();
}
iluminado_btn.addEventListener(MouseEvent.CLICK,aplicarIluminado)
;
function aplicarIluminado(event:MouseEvent):void {
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
3
2
3
3
3
4
3
5
filtroIluminado=! filtroIluminado;
mostrarFiltros();
}
bisel_btn.addEventListener(MouseEvent.CLICK,aplicarBisel);
function aplicarBisel(event:MouseEvent):void {
filtroBisel=! filtroBisel;
mostrarFiltros();
}
iluminadoDeg_btn.addEventListener(MouseEvent.CLICK,aplicarIlumina
dodeg);
function aplicarIluminadodeg(event:MouseEvent):void {
filtroIluminadoDeg=! filtroIluminadoDeg;
mostrarFiltros();
}
biselDeg_btn.addEventListener(MouseEvent.CLICK,aplicarBiseldeg);
function aplicarBiseldeg(event:MouseEvent):void {
filtroBiselDeg=! filtroBiselDeg;
mostrarFiltros();
}
ajustarColor_btn.addEventListener(MouseEvent.CLICK,aplicarColor);
function aplicarColor(event:MouseEvent):void {
filtroAjustarColor=! filtroAjustarColor;
mostrarFiltros();
}
3
6
3
7
3
8
3
9
4
0
4
1
6. Finalmente definiremos la funcin mostrarFiltros que se ejecutar cada vez que se
pulse un botn. Evala cada variable para decidir si aplica el filtro o no:
?
1
2
3 function mostrarFiltros() {
var matrizFiltros:Array=[];
4
if (filtroSombra) {
5
matrizFiltros.push(sombra);
6
}
7
if (filtroDesenfocar) {
matrizFiltros.push(desenfocar);
8
}
9
if (filtroIluminado) {
10
matrizFiltros.push(iluminado);
11
}
12
if (filtroBisel) {
matrizFiltros.push(bisel);
13
}
14
if (filtroIluminadoDeg) {
15
matrizFiltros.push(iluminadoDeg);
16
}
17
if (filtroBiselDeg) {
matrizFiltros.push(biselDeg);
18
}
19
if (filtroAjustarColor) {
20
matrizFiltros.push(ajustarColor);
21
}
miClip.filters=matrizFiltros;
22
}
23
24
25
Al principio de la funcin creamos una variable de tipo Array que almacenar los
filtros activos (los que se encuentren a true). Luego utilizando el condicional if
vemos si el filtro se encuentra activado, en caso afirmativo, creamos el filtro (con
Hemos conseguido que se puedan cargar y descargar los filtros con una simple variable que
evala si el filtro se encuentra activo o no.
Utiliza el archivo fuente video.fla que encontrars en la carpeta ejercicios/video del curso.
Tu tarea consistir en importar el video video.mov que encontrars en la misma carpeta y
crear 6 puntos de navegacin, en los segundos 0, 10, 20, 30, 40 y 50.
7. Pulsa el botn
para aadir un punto de referencia, llmalo 1 y dale el tipo
Navegacin .
8. Sita el cabezal de reproduccin en el segundo 10 y pulsa el botn
, llama al
punto de referencia 2 y dale el tipo Navegacin.
9. Sita el cabezal de reproduccin en el segundo 20 y pulsa el botn
, llama al
punto de referencia 3 y dale el tipo Navegacin.
10. Sita el cabezal de reproduccin en el segundo 30 y pulsa el botn
, llama al
punto de referencia 4 y dale el tipo Navegacin.
11. Sita el cabezal de reproduccin en el segundo 40 y pulsa el botn
, llama al
punto de referencia 5 y dale el tipo Navegacin.
12. Sita el cabezal de reproduccin en el segundo 50 y pulsa el botn
, llama al
punto de referencia 6 y dale el tipo Navegacin.
btnPlay.addEventListener(MouseEvent.CLICK,reproducir);
function reproducir(event:MouseEvent):void {
miVideo.play();
}
//Boton pausa ||
btnPause.addEventListener(MouseEvent.CLICK, pausar);
function pausar(event:MouseEvent):void {
miVideo.pause();
}
//Boton avance >>
avance_rapido.addEventListener(MouseEvent.CLICK, avanzar);
function avanzar(event:MouseEvent):void {
miVideo.seekToNextNavCuePoint();
}
//Volumen
//Subir +
vol_mas.addEventListener(MouseEvent.CLICK, subirVolumen);
function subirVolumen(event:MouseEvent):void {
if (miVideo.volume<100) {
miVideo.volume=miVideo.volume+10;
}
}
//Bajar vol_men.addEventListener(MouseEvent.CLICK, bajarVolumen);
function bajarVolumen(event:MouseEvent):void {
if (miVideo.volume>0) {
miVideo.volume=miVideo.volume-10;
}
}
Utiliza el archivo fuente arma.fla que encontraras en la carpeta ejercicios/arma del curso.
Tu tarea consistir en crear el cdigo necesario para que el juego funcione. Debers seguir
las siguientes instrucciones:
?
package {
//Importamos las clases necesarias
import flash.display.MovieClip;
import flash.display.DisplayObject;
//Y creamos nuestra clase como una subclase (extends) de
MovieClip,
//para que disponga de sus mtodos
public class Disparo extends flash.display.MovieClip
{
public function Disparo(arma:Arma)
{
//Este mtodo asigna al disparo la rotacin y posicin
del arma que lo disparar
this.rotation = arma.rotation;
this.x = arma.x;
this.y = arma.y;
}
public function avanzar()
{
//Este mtodo mueve el disparo por la pantalla, con el
ngulo de rotacin
var radianes:Number = Math.PI / 180 * this.rotation;
this.x += Math.sin(radianes) * 13;
this.y -= Math.cos(radianes) * 13;
}
public function esta_dentro(alto:Number, ancho:Number)
{
//Este mtodo indica si el disparo sigue dentro de la
pantalla,
//Si no se ha salido ni por arriba, ni abajo, ni por la
izquierda o derecha
return !(this.x < 0 || this.y < 0 || this.x > ancho ||
this.y > alto);
}
}
}
import flash.display.MovieClip;
import flash.display.DisplayObject;
//Y creamos nuestra clase como una subclase (extends) de MovieClip,
para que disponga de sus mtodos
public class Proyectil extends flash.display.MovieClip
{
private static var velocidad_base:Number = 3;//Velocidad base de
los proyectiles
private var velocidad:Number;// Velocidad del proyectil
private var _explotando:Boolean = false;//Indica si ha comenzado a
explotar
public function Proyectil(){}
public function disparar(nivel:Number, ancho:Number, alto:Number)
{
//Le pasamos como argumentos el nivel actual del juego, y el
ancho y alto del rea de disparo
//Crearemos, para cada tipo de proyectil, tres escalas
posibles, de forma aleatoria.
var escala:Number = num_aleatorio(0,2);//escala influir en el
tamao y la velocidad
//Calculamos la velocidad, sumando la velocidad base + la
parte que depende del nivel + la
// que depende de la escala
velocidad = velocidad_base+nivel*1.5+(2-escala);
//calculamos el nuevo tamao en funcin de la escala (0 =
tamao original, 2= 80%)
this.width = this.width*((10-escala)/10);
this.height = this.height*((10-escala)/10);
//Calcualmos, de forma aleatoria el punto de salida del
proyectil en la parte superior
//Dejamos la mitad del ancho del proyectil como margen para
que no salga una parte fuera de la pantalla
var puntoSalida:Number = num_aleatorio(this.width / 2,ancho this.width / 2);//Zona de salida
//Asignamos al proyectil su posicin inicial
this.x = puntoSalida;
this.y = 0;
//Calculamos, de forma aleatoria, el punto de impacto.
Limitamos la zona de posible impacto, dejando
//1/4 del ancho de margen a cada lado, para que la mayora de
proyectiles vayan hacia el arma
var puntoImpacto:Number = num_aleatorio(ancho*(1/4),
ancho*(3/4));
//Sabiendo las coordenadas de salida e impacto, podemos
utilizar calcular el ngulo con Math.atan2
//Como el resultado es en radianes, lo convertimos a grados
(radianes*180/Math.Pi)
//Esos grados son la rotacin que daremos al objeto
this.rotation= 270+(Math.atan2( alto - this.y,puntoImpactopuntoSalida) * 180/Math.PI);
}
public function avanzar()
{
25. Activa la opcin Exportar para ActionScript, dale la clase Proyectil2 y escribe
Proyectil como Clase base. Pulsa Aceptar.
26. Selecciona el objeto proyectil3 de la Biblioteca, haz clic derecho sobre l y
selecciona Propiedades.
27. Activa la opcin Exportar para ActionScript, dale la clase Proyectil3 y escribe
Proyectil como Clase base. Pulsa Aceptar.
Utiliza un documento en blanco. No podrs crear ningn elemento. Lo debers hacer todo
mediante ActionScript.
Tendrs cumplir los siguientes requisitos:
Dibujar un fondo.
Dibujar una estrella.
Que la estrella tenga un brillo dinmico.
Que la estrella se pueda arrastrar.
Dibujar los copos aleatoriamente.
Que los copos desaparezcan (se derritan) al cabo de un tiempo.
estrella.graphics.moveTo(20+stage.width/2, -91+stage.height/2);
estrella.graphics.lineTo(22+stage.width/2, -21+stage.height/2);
estrella.graphics.lineTo(84+stage.width/2, 0+stage.height/2);
estrella.graphics.lineTo(22+stage.width/2, 21+stage.height/2);
estrella.graphics.lineTo(20+stage.width/2, 91+stage.height/2);
estrella.graphics.lineTo(-22+stage.width/2, 37+stage.height/2);
estrella.graphics.lineTo(-86+stage.width/2, 56+stage.height/2);
estrella.graphics.lineTo(-50+stage.width/2, 0+stage.height/2);
estrella.graphics.lineTo(-86+stage.width/2, -56+stage.height/2);
estrella.graphics.lineTo(-22+stage.width/2, -37+stage.height/2);
estrella.graphics.lineTo(20+stage.width/2, -91+stage.height/2);
estrella.graphics.endFill();
addChild(estrella);
8. Por ltimo, aademos las funciones que nos permitan arrastrar y soltar la estrella.
?
1// Funciones para poder mover la estrella
2estrella.addEventListener(MouseEvent.MOUSE_DOWN, arrastrar);
function arrastrar(event:MouseEvent):void {
3
estrella.startDrag();// Al mantener pulsada la estrella
4podremos arrastrala
5}
6estrella.addEventListener(MouseEvent.MOUSE_UP, soltar);
7function soltar(event:MouseEvent):void {
estrella.stopDrag();// Cuando soltemos, la estrella
8permanecera en el lugar que deseemos
9}
9. Como la estrella era un nico objeto, lo hemos creado directamente en el panel de
acciones. En cambio, como los copos son muchos objetos iguales, es ms til que
creemos una clase. Haz clic en el men Archivo Nuevo... y elige Clase de
ActionScript 3.0.
10. En el cuadrod e dilogo, especifica Copo como nombre de la clase.
11. El siguiente cdigo lo introduciremos en la Clase (archivo .as) donde incluiremos
todas las funciones y variables para un copo. Calcularemos las posiciones, los
tamaos y las velocidades aleatorias. Mediante la variable vidaCopo controlaremos
si el copo se derrite o no.
?
package {//Importamos las clases necesarias
import flash.display.MovieClip;//Necesitamos MovieClip que es lo
que crearemos
import flash.filters.BlurFilter;//El filtro que emplearemos
import flash.events.Event; //Utilizaremos evento
import flash.events.EventDispatcher; //Y un generador de eventos
//Y creamos nuestra clase como una subclacse (extends) de
MovieClip, para que disponga de sus mtodos
public class Copo extends flash.display.MovieClip {
private var velocidad:Number;// Velocidad de cada del copo
private var estrella:MovieClip;// Objeto estrella que
utilizaremos para saber si choca con ella
private var fondo:MovieClip;// Objeto sobre el que
aparecern los copos
private var vidaCopo:Number=300;// La vida que tendr el
copo antes de derretirse
public function Copo(_estrella:MovieClip, _fondo:MovieClip)
{
this.estrella=_estrella;//Asignamos los parmetros a
sus respectivas propiedades
this.fondo=_fondo;
//dibujamos el copo
this.graphics.beginFill(0xFFFFFF);
this.graphics.moveTo(20, -91);
this.graphics.lineTo(22, -21);
this.graphics.lineTo(84, 0);
this.graphics.lineTo(22, 21);
this.graphics.lineTo(20, 91);
this.graphics.lineTo(-22, 37);
this.graphics.lineTo(-86, 56);
this.graphics.lineTo(-50, 0);
this.graphics.lineTo(-86, -56);
this.graphics.lineTo(-22, -37);
this.graphics.lineTo(20, -91);
this.graphics.endFill();
max=max-min;
return min+(Math.floor((Math.random()*(max*10)))%max);
}
}
}
12. Guara el archivo con el nombre de la clase, es decir, gurdalo como Copo.as.
13. Para acabar, aade a la pelcula principal (nieve.fla) las funciones que lanzarn el
copo, y la que los borra cuando se produzca el evento copoDerretido.
?
addEventListener(Event.ENTER_FRAME, nevar);
function nevar(event):void{
addChild(new Copo(estrella, fondo));//Creamos un copo y lo
agregamos a la escena
}
addEventListener("copoDerretido", borrarCopo);
function borrarCopo(e:Event):void{
removeChild(Copo(e.target));
}