> Manuales > Manual de Flash

Ultimos pasos para terminar el juego de la bruja en Flash.

Ahora estamos en truco3.fla pero queremos 10 invasores. Recuerda que para el clip invasor que llamamos m1 dibujamos un círculo, y lo convertimos en un símbolo clip de película.

De la misma forma hacemos otros nueve clips, de distintos colores, que serán m2, m3, m4, m5, m6, m7, m8, m9, y m10.

Y los colocas encima del escenario más o menos así;


Y no te olvides de poner a cada uno, su nombre en el Panel de Propiedades.

Crear la función invade (clip)
Mantén los candados en las capa fondo y brujas. Trabajamos en la capa invasores.
En el primer fotograma hemos escrito dos condicionales if
En el primero si se cumplía la condición de que no estuviera demasiado bajo, entonces se lo adelantara un píxel
En el segundo si se cumplía la condición de que el invasor estuviera en el mismo espacio que la bruja, entonces hacerlo invisible.
En vez de repetir esto para cada nuevo invasor, vamos a crear una función que realice lo mismo.
Arregla el código del fotograma para que figuren los condicionales dentro de una función así:

function invade(clip){
if(clip._y <540){
clip._y=clip._y+1;
}
if((clip._x >_root.clipbruja._x)and(clip._x < _root.clipbruja._x+130)and (clip._y > _root.clipbruja._y)and(clip._y < _root.clipbruja._y+105)){
clip_y = clip_y; clip.stop();
clip._visible=false;
}
}


Nota que la función tiene un parámetro que figura entre paréntesis. El parámetro indica que la función va a ser llamada con un argumento general que servirá como representante de algo singularmente único.
Con otras palabras (clip) es la palabra que después representará a m1, m2, etc.
Después de arreglar la función, la llamas para cada uno de los invasores, completando así el código para este fotograma:

invade(m1);
invade(m2);
invade(m3);
invade(m4);
invade(m5);
invade(m6);
invade(m7);
invade(m8);
invade(m9);
invade(m10);


Archivar, probar y pesar. Sigue pesando 26 kb.
Después de grabar este trabajo como truco3.fla, guárdalo como truco4.fla para continuar.
Y no olvides que en el Navegador, para activar las teclas flechas, debes hacer antes un clic sobre la película.

truco4.fla Usamos la función getTimer() para que los invasores caigan a distintos tiempos.

¡No tiene gracia que los invasores caigan todos a la vez! ¡El juego resulta muy fácil!
Le daremos a una función predefinida del sistema esta tarea: getTimer()
Esta función da en milisegundos el tiempo que ha transcurrido desde el comienzo de la ejecución de una película.
Probando distintas cuentas, más por ensayo y error que por razonamiento logré dar con una fórmula que me devuelve los intervalos que se ajustan bien.

a = getTimer();
momento = a/100;
b = int(momento)
c=b/10;


De forma que en el fotograma de la Capa Invasores, la función invade(clip) queda como está, pero se usa la fórmula para llamar a la función en distintos tiempos. La acción completa del fotograma queda así: function invade(clip){
if(clip._y <540){
clip._y=clip._y+2;
}
if((clip._x >_root.clipbruja._x)and(clip._x < _root.clipbruja._x+130)and (clip._y > _root.clipbruja._y)and(clip._y < _root.clipbruja._y+105)){
clip_y = clip_y; clip.stop();
clip._visible=false;
}
}
a = getTimer();
momento = a/100;
b = int(momento)
c=b/10;
if(c >1){invade(m1);}
if(c >3){invade(m10);}
if(c >5){invade(m3);}
if(c >7){invade(m8);}
if(c >9){invade(m5);}
if(c >11){invade(m9);}
if(c >13){invade(m2);}
if(c >15){invade(m6);}
if(c >17){invade(m7);}
if(c >19){invade(m4);}
if(c >21){a = ""; b=""; c= "";}

Ahora otro arreglo más. Pones candado en las Capas fondo e invasores porque vamos a trabajar en la Capa bruja
Hasta aquí la bruja llegando a un extremo del escenario aparecía por el otro. Pero en el viaje vertical eso no nos conviene más. Después de cierta altura, en medio del mar, la bruja ya no podrá atrapar invasores.
Por eso debemos cambiar para las teclas UP y DOWN el número 540 por el nuevo que es 417
Y otra reforma en la Capa Invasores, así que candado en las otras y libre ésta.
Vamos a hacer más rápida la caída de los invasores.
En el código del fotograma de esta capa donde dice;

function invade(clip){
if(clip._y <540){
clip._y=clip._y+1;
}


Cambia el número 1 por el número 2 así avanzará a pasos (píxeles) más largos.
Archiva truco4.fla guárdalo, pésalo.
Para el próximo paso guárdalo como truco5.fla .

truco5.fla Usamos la función getTimer() para que los invasores caigan a distintos tiempos.

Disparador del juego porque activa las teclas flechas.
Necesitábamos que el usuario hiciera clic en cualquier punto de la pantalla para activar las teclas flechas.
Crearemos en botón con el texto explicativo.
Primero pones candado a todas las capas y creas una superior a todas que llamaremos texto
Yo usé letra Verdana, tamaño 14 color blanco. Recuerda que todas las capas están con candado menos la del texto que estamos haciendo.
Como la letra es blanca, elegimos para escribir la parte más oscura del escenario, después
Seleccionamos el texto (son solo palabras sin fondo)y con Modificar' Convertir en símbolo ' tipo Botón nombre activar

El botón ya está en la biblioteca y lo puedes borrar del escenario.
Si en la biblioteca lo seleccionas, verás solamente la crucesita, porque las letras son blancas y el fondo de la biblioteca también.
Antes de traerlo al escenario, mira la capa fondo para asegurarte que la imagen cielo esté con las coordenadas x, y, a cero.
Después de nuevo con candado en todas menos en la capa texto trae el botón activar a las coordenadas x, y, a cero.
Escribe en el panel de Propiedades el nombre de instancia activar
Y la acción del botón activar es:

on(press){
activar._visible=false;
}


Y además encerramos el llamado a getTimer() y el lanzamiento de los invasores en un if que traduciendo dice:
Si el usuario pulsó el texto entonces comienza el juego. Esto es, comienza a correr el tiempo, y la caída de invasores.

Comentario final con el resultado del juego.
Trabajamos en la capa invasores con candado en las demás.
Al pie del escenario creamos un texto dinámico y le ponemos de nombre a la variable: barridos
No ponemos nombre de instancia. Usé letra verdana, tamaño 16, color blanco
Le puse de anchura 517.
Cuando la variable c, resultado del tiempo desde que el juego comenzó, llega a valer 44 los invasores han sido barridos o están en la tierra.
Por eso creamos un contador que cuente los invisibles, para tener los resultados y trasladarlos a la variable barridos
Por si te perdiste te doy el código completo del fotograma de la Capa Invasores.

function invade(clip){
if(clip._y <540){
clip._y=clip._y+2;
}
if((clip._x >_root.clipbruja._x)and(clip._x < _root.clipbruja._x+130)and
(clip._y > _root.clipbruja._y)and(clip._y < _root.clipbruja._y+105)){
clip._visible=false;
}
}

if(activar._visible==false){
a = getTimer();
momento = a/100;
b = int(momento)
c=b/10;
if(c >1){invade(m1);}
if(c >3){invade(m10);}
if(c >5){invade(m3);}
if(c >7){invade(m8);}
if(c >9){invade(m5);}
if(c >11){invade(m9);}
if(c >13){invade(m2);}
if(c >15){invade(m6);}
if(c >17){invade(m7);}
if(c >19){invade(m4);}
if(c>44){
contador = 0;
if(m1._visible==false){ contador = contador+1;}
if(m2._visible==false){ contador = contador+1;}
if(m3._visible==false){ contador = contador+1;}
if(m4._visible==false){ contador = contador+1;}
if(m5._visible==false){ contador = contador+1;}
if(m6._visible==false){ contador = contador+1;}
if(m7._visible==false){ contador = contador+1;}
if(m8._visible==false){ contador = contador+1;}
if(m9._visible==false){ contador = contador+1;}
if(m10._visible==false){contador = contador+1;}
Z = 10-contador;
barridos = "barridos "+ contador + ", invadieron mar y tierra " +Z;
}
}

Comentario final.

Traté de que el juego completo pesara lo menos posible. Pesa 31 KB. Hasta que pese 100 KB, puedes usar tu imaginación y hacerlo más interesante. Después ya habrá que buscar otras herramientas, tratando de no llegar a tener que decir: Espere por favor que estamos cargando.

Susana Ríos Suanes

Docente de Lógica.

Manual