Les debo esta aplicación porque cuando hice el juego de las brujas me olvidé que FLASH tiene este método.
Esta aplicación es una de tantas en la web de una Academia de Choferes.
La Academia ha pedido que primero se repase las SEÑALES DE TRÁNSITO, luego las SEÑALES DE ADVERTENCIA
(viene curva cerrada, cruza tren, viene puente, etc.), después los DERECHOS DEL PEATÓN (ej. cebras).
Hecho el repaso el programa hace que el usuario conduzca y en distintas escenas se encuentra con los
carteles y experimentará (menos mal que en ficción) el peligro de no respetar las señales.
Repasemos las Señales de Tránsito
Los símbolos los copié del Google y no te los paso porque saqué los de Uruguay, pero ví que cada país
tiene los suyos, a veces igual y otras veces, no.
Si haces esta aplicación puedes dejar los símbolos como imágenes tal como las traes o convertirlas a
en simbolos gráficos y pesarán lo mismo.
Lo que importa es el cuadrado donde se apoyan y que se ve de un gris oscuro. Es muy simple, hice un
cuadrado de 140 por 140 le puse un color azul fuerte (#003399) y lo convertí a símbolo MovieClip,
con nombre azul.
Necesitaba 14 cuadrados, porque de las 16 señales que tiene mi país me salteo la una (ceda el paso)
y la seis(pare) porque tienen las palabras en el símbolo y no necesitan etiqueta.
A cada instancia que pongo en el escenario, le bajo el alpha a 10 y por eso se ve gris oscuro. En el
Panel de propiedades le pongo los nombres, todos distintos, de acuerdo al símbolo, para poder luego detectar
si los impactos(hitTest) son o no correctos.
Por eso, si el cuadrado se llama azul2 la etiqueta se llamará t02
Recuerda que si te olvidas de ponerle los nombres a cada clip en el Panel De Propiedades, el programa
no sabe quién es quién.
El único script que escribes en el primer fotograma de la capa señales es el siguiente:
if(t02.hitTest(azul2)){
azul2._alpha=80;
}
if(t03.hitTest(azul3)){
azul3._alpha=80;
}
if(t04.hitTest(azul4)){
azul4._alpha=80;
}
if(t05.hitTest(azul5)){
azul5._alpha=80;
}
if(t07.hitTest(azul7)){
azul7._alpha=80;
}
if(t08.hitTest(azul8)){
azul8._alpha=80;
}
if(t09.hitTest(azul9)){
azul9._alpha=80;
}
if(t10.hitTest(azul10)){
azul10._alpha=80;
}
if(t11.hitTest(azul11)){
azul11._alpha=80;
}
if(t12.hitTest(azul12)){
azul12._alpha=80;
}
if(t13.hitTest(azul13)){
azul13._alpha=80;
}
if(t14.hitTest(azul14)){
azul14._alpha=80;
}
if(t15.hitTest(azul15)){
azul15._alpha=80;
}
if(t16.hitTest(azul16)){
azul16._alpha=80;
}
Como ves por el script del frame 1, si el test de impacto
(hitTest) detecta la colisión entre las dos instancias hace que
el cuadrado suba el alpha a 80.
Las etiquetas
Como ves las etiquetas se arrastran sin ninguna
programación, porque son clips a los que les hemos agregado la
propiedad de ser arrastrados usando la extensión de la clase
MovieClip que ya comentamos en el artículo
Clases y objetos en Flash
Explico rápidamente como hacer estas etiquetas.
En un principio las diseñas y las conviertes a símbolos
MovieClip.
Como son todas distintas, cada una tiene su nombre.
En este caso, t02, t03, etc.
Para extender la clase a arrastrable debemos escribir
un script directamente en un archivo ActionScript
Archivo -->Nuevo-->ArchivoActionScript
y lo guardas en la misma Carpeta donde guardas el
archivo .fla
El nombre del archivo debe ser exactamente el
mismo que la clase. Si es Arrastre.as, la
clase es Arrastre y no arrastre (con la inicial
en minúscula)
Numeré y separé las partes del script para
explicarlos mejor.
Se nos ocurrió el nombre Arrastre para esta
sub clase, así que en el renglón 1
en la sintaxis de Flash dice:
1 class Arrastre extends MovieClip {
2 function Arrastre() {
3 onPress=Arrastrar;
4 onRelease=Soltar;
5 }
6 private function Arrastrar():Void{
7 this.startDrag();
8 }
9 private function Soltar():Void{
10 this.stopDrag();
11 }
12 }
Una vez que tienes el archivo Arrastre.as en la misma Carpeta donde guardas la aplicación que
estás haciendo, debes extender la propiedad de arrastre a cada etiqueta.
Para eso seleccionas en la biblioteca con el botón derecho, una por vez, cada clip etiqueta, pulsas
Propiedades y ahí la exportas para ActionScript y la integras a la clase ActionScript Arrastre.
Cuando la veas como la siguiente imagen pulsas Aceptar.
Te muestro la línea
del tiempo con solo
dos capas.
En la capa cuadros
están los cuadros
(azul2, etc) y las
etiquetas (t02, etc.)
En la capa señales
los símbolos
y los textos.
En la capa señales, en el fotograma 1, está el script
para detectar las colisiones y en el fotograma 2
dice: gotoAndPlay(1);