Crea un juego de ahorcado impresionante en Flash con ActionScript 3.0

Desarrollar un juego es una habilidad imprescindible si eres un desarrollador de Flash, utiliza muchos métodos y propiedades diferentes de ActionScript, además, ¡te divertirás mucho en el proceso! En este tutorial, te mostraré cómo crear un juego Hangman avanzado con ActionScript 3.0. Vamos a jugar!


Paso 1: Breve descripción

Durante este tutorial Premium, demostraré el proceso de desarrollo del juego desde el diseño de la Interfaz Gráfica de Usuario usando Flash Tools y un poco de Photoshop, hasta la parte del código usando el poder de ActionScript 3.


Paso 2: Interfaz gráfica de usuario

Estos son los elementos de la interfaz gráfica de usuario que crearemos:



Paso 3: Logo

Crea un nuevo archivo de Flash y establece sus dimensiones a 320x480 px.


Seleccione la Herramienta de texto (T), y elija una fuente de estilo de dibujos animados, usé GoodDog 86 pt.


Escriba "Hangman +" y separe (Cmd + B) el texto para agregar un color degradado.


Seleccione los gráficos y abra el Panel de colores, elija Gradiente lineal y use estos colores: # FBA31E, # FECB56.


Use la herramienta Transformación de degradado para rotar el degradado y obtener un color como se muestra en la imagen.


Repita este proceso en el "+" usando estos colores: # 831000, # A91101.


Convierta todo el lote en un clip de película y agregue un filtro de sombra con los siguientes valores:


Terminarás con algo como esto:



Paso 4: Antecedentes

Vamos a crear el fondo.

Abre Photoshop y crea un nuevo archivo (320x480).


Seleccione la herramienta Degradado (T) y agregue un fondo radial marrón (# 4E4236, # 382F26) comenzando desde el centro hasta uno de los bordes.


Ahora es el momento de agregar un filtro de ruido para obtener un fondo texturizado.

En el menú, vaya a Filtro> Ruido> Agregar ruido y use estos valores:


Guarde su imagen como png-24 usando la opción "Guardar para Web y dispositivos" en el menú Archivo.

Su fondo debe verse así:



Paso 5: Botones de la pantalla principal

Vuelva a Flash, importe (Cmd + R) su fondo y céntrelo.

Use la opción Organizar> Enviar a atrás en el menú contextual (clic derecho) para enviar el fondo a la parte inferior y mostrar su logotipo creado anteriormente.


Seleccione la Herramienta primitiva de rectángulo y cree un rectángulo de 200x50 px con el mismo degradado amarillo que antes (# FBA31E, # FECB56).


Vaya a Opciones de rectángulo en el Panel de propiedades y establezca el radio de la esquina en 8.00.


Convierta el dibujo a MovieClip y agregue el siguiente filtro:


Seleccione la herramienta de texto, cree un nuevo texto estático y escriba "Nuevo juego". Utilicé este formato: Myriad Pro Semibold, 24 pt, # 831000.


Para crear un efecto de presión de letras, duplique (Cmd + D) el campo de texto y muévalo un píxel hacia abajo, cambie el color del texto a # FDDA8A.


Convertirlo en MovieClip y centrarlo en el escenario. Establecer su nombre de instancia a "newGame".

Repita este proceso con dos botones más; Opciones y acerca de. Recuerda cambiar los nombres de instancia.


Convierte lo que tienes hasta ahora en un MovieClip, llámalo "menuScreen" y colócalo temporalmente fuera del escenario.


Paso 6: Gráficos del juego

Esta es la interfaz del juego real, donde interactúas con el teclado para adivinar la palabra oculta.


Como puede ver, usamos el mismo fondo, así que duplíquelo y céntrelo en el escenario..


Paso 7: Cuaderno

Seleccione la Herramienta primitiva de rectángulo, cambie el radio de la esquina a 10 y dibuje un rectángulo de px de 260x250. Agregar un fondo radial (# FBEE84, # FDF9B2).


Para hacer las líneas, uso la herramienta Rectángulo y dibuja un rectángulo de 260x1 px con un color de # C6C970.


Duplique la línea (Cmd + D) y colóquela 10 píxeles hacia abajo, repita esto hasta obtener una imagen como la siguiente:


Para las líneas laterales, cree un rectángulo de 1x250 px, # 99832E y colóquelo a 20 píxeles del borde, duplíquelo y coloque el nuevo a 2 píxeles del original..


Convierta esto en MovieClip, duplíquelo, envíelo al reverso y colóquelo 5 px más bajo. Usa el mismo filtro de botones..


Ahora le daremos un título al cuaderno; Este texto cambiará de acuerdo a la categoría seleccionada en las Opciones..

Seleccione la herramienta de texto, cree un campo de texto dinámico de 236x25 px y escriba un texto como guía. El formato es Marker Felt 18 pt, # 663622.

Usa la técnica de letterpres que usamos antes para agregar algunos detalles. Los nombres de instancia son "categoryText" y "categoryLP" para el campo de tipografía.



Paso 8: Hangman

Para dibujar al verdugo, haremos un poco de trampa, ya que Flash no tiene pinceles o algo similar, usaremos una Fuente para dibujar estilo crayón.

Usé caracteres de la fuente LeviCrayola para dibujar esto:


Convierta cada parte en un clip de película y establezca sus nombres de instancia como este: head, body, leftArm, rightArm, leftLeg, rightLeg.

Coloque las piezas del ahorcado en el centro del cuaderno y continúe con el siguiente paso.


Paso 9: Teclado

La entrada del usuario será manejada por un teclado en el escenario que compartirá la tecla presionada en la pantalla oculta.

Seleccione la herramienta primitiva de rectángulo y dibuje un rectángulo de 26x38 px con el fondo previamente amarillo, agregue un radio de esquina de 5.


Convertirlo en MovieClip y añadir el filtro de botón.

Agregue la letra correspondiente y use la técnica de impresión tipográfica para crear un botón con mejor aspecto. El formato es Myriad Pro Semibold, 23 pt, Negro.


Convierta los 2 elementos en un clip de película y asígnele el nombre como la letra que representa en UpperCase.

Repita este paso con todas las letras, recuerde establecer el nombre de instancia correcto.

También crearemos un clip de película que aparecerá en la parte superior de la tecla cuando se presione con el mismo rectángulo creado para la tecla.

Copie y pegue el rectángulo y cambie su color a blanco, alfa 30%, marque la casilla "Exportar para ActionScript" y llámela "Inactiva".


También se reproducirá un sonido cuando se presiona una tecla.

Puede encontrar todos los tipos de sonidos, incluidos los botones en AudioJungle, cuando encuentre un sonido que le guste, impórtelo (Cmd + R) y en el Panel de la biblioteca, haga clic derecho y seleccione "propiedades", marque la casilla "Exportar para ActionScript" y escribe ButtonSound como la clase.



Paso 10: Tecla Atrás

La tecla Atrás borrará los datos del juego y llevará al usuario a la pantalla de menú.

Cree una clave siguiendo los mismos pasos que el teclado, conviértala a MovieClip y llámela "atrás".



Paso 11: Opciones

La Vista de Opciones se muestra cuando el usuario hace clic en el botón Opciones en la Pantalla de Menú. Muestra información de algunas opciones para el juego..

Debería ser más fácil crear esta vista ya que ya tenemos todos los gráficos y fondos..


La opción Categoría, como su nombre lo indica, describe el tipo de palabras que se mostrarán al jugar. Puedes usar un número ilimitado de categorías, lo veremos más adelante en el código.

La opción de victoria es la cantidad de palabras que debes adivinar correctamente para declarar el juego como ganado.

La opción Vidas es el número de respuestas incorrectas que puedes hacer antes de perder el juego.


Paso 12: TextFields

Esta vista tiene 6 TextFields, los de la izquierda son estáticos y están formateados de la siguiente manera: Marker Felt Thin, 19 pt, # 673723.


Las correctas son Dinámicas y se fomentan de esta manera: Helvetica Regular, 15 pt, # 673723. (agregar instancias en la imagen)



Paso 13: Botón Atrás

El botón Atrás llevará al usuario a la pantalla de menú..

Cree un campo de texto estático con el mismo formato que los anteriores y cambie el tamaño a 16 pt.

Convertirlo en botón, llamarlo "atrás".



Paso 14: Botón Más

El botón Más cambiará los valores de las opciones..

Cree un círculo blanco de 16x16 px con la herramienta Oval (O).


Cree otro círculo, esta vez 12x12, # 673723 y céntrelo.


Cree un rectángulo de 2px de ancho y 5px de altura, duplíquelo, gire los -45 grados y sepárelos (Cmd + B) para que se intersecten, elimine el área que no tiene fecha para hacer una flecha y céntrela.


Conviértalo a MovieClip y agregue el siguiente filtro:


Duplique y coloque los botones como se muestra en el Paso 11 y nómbrelos: "catButton", "vicButton" y "livesButton".

Convierta todo a MovieClip, marque la casilla de verificación "Exportar para ActionScript" y asígnele el nombre "OptionsView". Puedes borrar el símbolo del escenario ahora..


Paso 15: Acerca de

La vista Acerca de muestra información sobre el creador, la compañía y la versión de la aplicación..


Escale el logotipo de Hangman a 121x30.6 px y céntrelo.

Cree y centre un campo de texto estático con este formato: Helvetica Neue Regular, 15 pt, #EFEFEF y agregue el texto que se muestra en la imagen.

Conviértalo todo a MovieClip, marque la casilla de verificación "Exportar para ActionScript" y asígnele el nombre "AboutView". Puedes borrar el símbolo del escenario ahora..


Paso 16: Alerta

Vamos a mostrar un mensaje cuando gane o pierda, para eso usaremos esta vista de alerta.


Cree un rectángulo de 320x240 px y use este degradado radial: # 000000 alpha 0, # 000000 alpha 50.


A continuación, cree un rectángulo blanco de 260x100 px con un radio de esquina de 20 px y colóquelo en el centro del fondo negro.


Duplica el rectángulo y haz que sea 256x96 px, # FCB73A alpha 90.


Cree un campo de texto dinámico de 240x23 px y asígnele el nombre de "título". Presione el botón "Alinear Centro" en el panel Párrafo y use la técnica de impresión tipográfica, esta vez moviendo el campo de texto duplicado hacia arriba. El formato es Helvetica Bold 19 pt, blanco..


Utilice otro Dynamic TextField con este formato: Helvetica Regular 15 pt, blanco. Colóquelo en el centro y use la opción Alinear Centro..

Denomínelo "contenido" y agregue texto a los campos como guía..


Convierta todo a MovieClip, marque la casilla de verificación "Exportar para ActionScript" y asígnele el nombre "AlertView".


Paso 17: Configuración de la interfaz

Coloque nuevamente la pantalla de menú en el escenario y céntrela. Debería estar encima de los gráficos del juego..



Paso 18: Tiempo de ActionScript!

Es hora de ActionScript. Cree un nuevo archivo ActionScript y guárdelo como Main.as en la carpeta de clases.



Paso 19: Paquete

paquete de clases 

La palabra clave del paquete le permite organizar su código en grupos que pueden ser importados por otros scripts. Se recomienda nombrarlos comenzando con una letra minúscula y usar intercapas para las siguientes palabras, por ejemplo: mis clases.

Si no desea agrupar sus archivos en un paquete o solo tiene una clase, puede usarlos directamente desde su carpeta de origen, pero la idea es organizarlos..


Paso 20: Importar Clases Necesarias

Estas son las clases requeridas. Para obtener una descripción más detallada de cada clase, consulte la Ayuda de Flash (F1).

 importar flash.display.Sprite; importar flash.net.URLLoader; importar flash.net.URLRequest; importar flash.text.TextFormat; importar flash.text.TextField; importar flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.events.Event; / * Importar clases para animaciones * / import fl.transitions.Tween; importar fl.transitions.easing. *; importar fl.transitions.TweenEvent;

Paso 21: Declarar y extender la clase

los se extiende palabra clave define una clase que es una subclase de otra clase. La subclase hereda todos los métodos, propiedades y funciones, de esa manera podemos usarlos en nuestra clase.

 clase pública HangmanPlus extiende Sprite 

En este ejemplo, la clase HangmanPlus hereda todos los métodos y propiedades de la clase Sprite.


Paso 22: Variables

Hay muchas variables en este juego, esto se debe a que muchas cosas pueden variar. Encontrarás todo lo explicado en los comentarios..

 En las categorías / *, la función del cargador cargará un archivo de texto con los nombres de esta matriz. Si desea agregar una categoría, simplemente agregue el archivo de texto al directorio donde se encuentra Hangman + .swf y el nombre del archivo a la matriz * / categorías de var privado: Array = new Array ("Fruits", "Animals", "Sports"); private var category: int = 0; // Esta variable se cambiará en las Opciones, cuando el usuario haga clic en el botón Más 1, se agregará y luego se usará en la matriz para elegir la categoría correcta private var correctLetters: int = 0; // Las letras correctas adivinadas, se compararán con la longitud de la matriz de las letras para verificar si la palabra está completa. Var intentos privados: int = 6; // El número de intentos (cabeza, cuerpo, dos brazos, dos piernas) privado var btnSnd: ButtonSound = new ButtonSound (); // El sonido que se reproducirá cuando se presione un botón del teclado privado var inactivo: Inactivo; // El clip que usaremos para bloquear las teclas ya presionadas private var icontainer: Array = new Array () ; // Una matriz para almacenar los clips inactivos para una eliminación efectiva de las claves var privadas: int = 0; // Una variable para contar las claves que ya están inactivas, esta var indica el número de "icontainer" para eliminar el índice var privado: int ; // Almacena el valor del método String.search, que se usa para buscar la tecla presionada en la palabra oculta los botones privados var: Arr ay; // El conjunto de nombres de botones, que se utiliza para agregar todos los oyentes fácilmente privados var txtLoader = new URLLoader (); // Esto cargará el archivo de texto especificado privado var allWords: String; // Una cadena con todas las palabras contenidas en el archivo de texto private var allWordsArray: Array = new Array (); // Contiene allWords var, separados por word private var currentWords: String; // La (s) palabra (s) actual (es) que se adivinarán private var fmt: TextFormat = new TextFormat (); // TextFormat private var us: Subrayado; // El guión bajo subrayado private var usContainer: Sprite; // Un contenedor para el guión bajo privado var letters: Array; // Las letras de la palabra actual private var tf: TextField; // TextField private var tfCont: Sprite; // Contiene los campos de texto private var tfs: Array = new Array (); Almacena los campos de texto, utilizados para eliminarlos private var tween: Tween; // Tween, para la animación de los espacios de var privados: int = 0; // Almacena los espacios en las palabras actuales private var arrayIndex: int; // Almacena las palabras que no se han usado private var opt ions: OptionsView; // Las opciones ven el clip private var about: AboutView; alerta de var privado: AlertView; private var correcto: int = 0; // El contador de palabras correctas private var falla: int = 0; // Falla en el contador privado var victory: int = 3; // Victoria por defecto para ganar la vida privada de var: int = 3; // Vidas predeterminadas privadas var alertIsOnStage: Boolean = false; // True si AlertView está en etapa

Paso 23: Constructor

El constructor es una función que se ejecuta cuando un objeto se crea a partir de una clase. Este código es el primero en ejecutarse cuando crea una instancia de un objeto o se ejecuta utilizando la Clase de documento.

 función pública HangmanPlus (): void / * Debe declarar la nueva matriz en el constructor para detectar que los elementos (matriz) son clips de película en el escenario * / botones = nueva matriz (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z); / * Botones de la pantalla del menú * / menuScreen.newGame.addEventListener (MouseEvent.MOUSE_UP, init); menuScreen.about.addEventListener (MouseEvent.MOUSE_UP, showAboutView); menuScreen.options.addEventListener (MouseEvent.MOUSE_UP, showOptionsView); / * Crear campos de texto para la palabra * / fmt.color = 0x282425; fmt.font = "Avenir 85 Heavy"; fmt.size = 18; hideParts (); // Oculta las partes del ahorcado

Paso 24: Iniciar la función

Esta función se ejecuta cuando el usuario hace clic en el botón Nuevo juego.

 función privada init (e: MouseEvent): void addButtonListeners (botones); // Agrega los escuchas al teclado back.addEventListener (MouseEvent.MOUSE_UP, opBackHandler); // Agrega el oyente al botón back loadTxt (categorías [categoría] + ".txt"); // Carga el archivo de texto de la matriz, la función se crea más adelante categoryText.text = categories [category]; // Establece el valor del texto de la categoría, esto se muestra en la parte superior de la categoría de gráficos del notebookLP .text = categorías [categoría]; tween = new Tween (menuScreen, "y", Strong.easeOut, menuScreen.y, - menuScreen.height / 2,0.8, true); // Crea una interpolación animando el MenuView up correct = 0; // Restablece el correcto y las suposiciones fallidas fallan = 0; 

Paso 25: Función de reinicio

Esta función reinicia algunas variables y configuraciones para cargar una nueva palabra, sin importar si la palabra fue adivinada o no. Se llama cuando termina la palabra animación..

 reinicio de la función privada (e: TweenEvent): void / * Reinicia algunas vars iniciales * / hideParts (); correctLetters = 0; addButtonListeners (botones); tries = 6; espacios = 0; tfs = new Array (); removeChild (tfCont); // Elimina los campos de texto de la palabra para (var j: int = 0; j < keys; j++)  removeChild(icontainer[j]);//Removes the button inactive clips, according to the keys pressed  removeChild(usContainer);//Removes the underscores /* Removes last word from array to avoid duplicates */ arrayIndex = allWordsArray.indexOf(currentWords); allWordsArray.splice(arrayIndex, 1); /* Load another word from array */ currentWords = allWordsArray[Math.floor(Math.random() * allWordsArray.length)]; letters = currentWords.split("");//Split letters to compare everyone to space createUnderscores(currentWords); createTextfields(); keys = 0; icontainer = new Array(); 

Paso 26: Cargar archivo

Carga un archivo de texto. Esta función se ejecuta en el paso 24.

 función privada loadTxt (archivo: String): void txtLoader.load (nuevo URLRequest (archivo)); txtLoader.addEventListener (Event.COMPLETE, parseTxt); // Agrega un oyente para analizar el texto

Paso 27: Texto Parse

Analiza el texto para crear los subrayados y campos de texto necesarios..

 función privada parseTxt (e: Evento): void allWords = e.target.data; // Obtiene los datos del txtLoader allWordsArray = allWords.split (","); // Divide las palabras, las palabras en el archivo de texto DEBE estar en mayúsculas y separados por comas currentWords = allWordsArray [Math.floor (Math.random () * allWordsArray.length)]; // Establece una (s) palabra (s) aleatoria (es) a las letras de variable de currentWords = currentWords.split (""); / / Dividir letras para comparar a todos con espacios createUnderscores (currentWords); createTextfields (); 

Paso 28: Acciones del botón Atrás

El botón Atrás elimina datos innecesarios, reinicia las variables y envía al usuario a la pantalla de menú.

 función privada opBackHandler (e: MouseEvent): void / * Eliminar alerta si está en la etapa * / if (alertIsOnStage) removeChild (alerta); alertIsOnStage = falso;  tween = new Tween (menuScreen, "y", Strong.easeOut, menuScreen.y, stage.stageHeight / 2,1, true); // Animate la vista de menú back.removeEventListener (MouseEvent.MOUSE_UP, opBackHandler); // Eliminar el oyente del botón removeButtonListeners (botones); // Eliminar los oyentes del teclado hideParts (); // oculta partes de hangman / * Reiniciar variables, ver la función de reinicio * / correctLetters = 0; tries = 6; espacios = 0; tfs = new Array (); removeChild (tfCont); para (var j: int = 0; j < keys; j++)  removeChild(icontainer[j]);  removeChild(usContainer); keys = 0; icontainer = new Array(); 

Paso 29: guiones bajos

Esta función crea los guiones bajos de acuerdo con las letras y los espacios en la (s) palabra (s) elegida (s).

 Función privada createUnderscores (palabras: cadena): void usContainer = new Sprite (); para (var i: int = 0; i < words.length; i++)  us = new Underscore(); us.x = (us.width + 3) * i; if (letters[i] == " ")  spaces++;  else  usContainer.addChild(us);   usContainer.x = (stage.stageWidth / 2) - (usContainer.width / 2) + (us.width / 2); usContainer.y = (stage.stageHeight / 2) + 10; addChild(usContainer); 

Paso 30: TextFields

La función createTextfields () crea los TextFields necesarios para mostrar una sola letra de la (s) palabra (s) en cada una.

 función privada createTextfields (): void tfCont = new Sprite (); para (var i: int = 0; i < letters.length; i++)  tf = new TextField(); tf.width = 20; tf.height = 30; tf.autoSize = TextFieldAutoSize.LEFT; tf.selectable = false; tf.defaultTextFormat = fmt; tf.x = (us.width + 3) * i; tfs.push(tf); tfCont.addChild(tf);  tfCont.x = (stage.stageWidth / 2) - (usContainer.width / 2) - 3; tfCont.y = (stage.stageHeight / 2) - 10; addChild(tfCont); 

Paso 31: Ocultar la función de las piezas

Ocultemos las partes del verdugo..

 función privada hideParts (): void body.visible = false; cabeza.visible = falso; leftArm.visible = false; leftLeg.visible = false; rightArm.visible = false; rightLeg.visible = false; 

Paso 32: Acciones del teclado

Esta es una función central. Buscará si la letra presionada está en la palabra actual para adivinar, deshabilitar la tecla, reproducir un sonido de tecla, agregar la tecla a la etapa en caso de que exista, verificar si la palabra está completa o si hay más posibilidades.

 función privada onKeyPress (e: MouseEvent): void / * Get and Disable key * / inactive = new Inactive (); inactive.x = e.target.parent.x; // Se agregó "padre" porque flash reconoce el MC en su interior como "nombre" inactive.y = e.target.parent.y; addChild (inactivo); icontainer.push (inactivo); teclas ++; / * Reproduce sonido * / btnSnd.play (); / * Comprueba si la letra está en la palabra * / index = currentWords.search (new String (e.target.parent.name)); if (index! = -1) / * La letra está en la palabra * / para (var i: int = 0; i < letters.length; i++)  if (new String(e.target.parent.name) == letters[i])  tfs[i].text = new String(e.target.parent.name); correctLetters++;   if (correctLetters + spaces == letters.length)//If word is complete  win(); removeButtonListeners(buttons);   else  tries--; switch (tries)//Shows the parts of the hangman  case 6 : trace(6); break; case 5 : head.visible = true; break; case 4 : body.visible = true; break; case 3 : leftArm.visible = true; break; case 2 : rightArm.visible = true; break; case 1 : leftLeg.visible = true; break; case 0 : rightLeg.visible = true; for (var j:int = 0; j < letters.length; j++)//Shows the missing letters  if (tfs[j].length == 0)  tfs[j].textColor = 0xFF0000; tfs[j].text = letters[j];   removeButtonListeners(buttons); fail(); break; default : trace("Error");   

Paso 33: Oyentes del teclado

Este código agrega los oyentes del teclado..

 Función privada addButtonListeners (array: Array): void for (var i: int = 0; i < array.length; i++)  array[i].addEventListener(MouseEvent.MOUSE_UP, onKeyPress);  

Y esto quita a los oyentes..

 función privada removeButtonListeners (array: Array): void for (var i: int = 0; i < array.length; i++)  array[i].removeEventListener(MouseEvent.MOUSE_UP, onKeyPress);  

Paso 34: Corregir la función de la palabra

Esta es la función que se ejecutará cuando el usuario adivine correctamente una (s) palabra (s).

 función privada win (): void / * Comprobar la victoria * / correct ++; if (correcto == victoria) alert = new AlertView (); alert.alertDialog.title.text = "You Win"; alert.alertDialog.titleLP.text = "You Win"; alert.alertDialog.content.text = "Haga clic en este cuadro de diálogo para cerrar."; addChild (alerta); alertIsOnStage = true; tween = new Tween (alert.alertDialog, "scaleX", Strong.easeOut, 0.5, 1, 0.5, true); // Muestra la vista de alerta alert.addEventListener (MouseEvent.MOUSE_UP, opBackHandler);  else tween = new Tween (tfCont, "x", Strong.easeIn, tfCont.x, stage.stageWidth + tfCont.width, 0.5, true); // Anima la palabra y establece una nueva tween.addEventListener (TweenEvent .MOTION_FINISH, reiniciar); 

Paso 35: Función de palabra incorrecta

Esta es la función que se ejecutará cuando el usuario no adivine correctamente la (s) palabra (s).

 función privada fail (): void / * Comprobar fallo * / fail ++; if (fail == lives) alert = new AlertView (); alert.alertDialog.title.text = "You Lose"; alert.alertDialog.titleLP.text = "You Lose"; alert.alertDialog.content.text = "Haga clic en este cuadro de diálogo para cerrar."; addChild (alerta); alertIsOnStage = true; tween = new Tween (alert.alertDialog, "scaleX", Strong.easeOut, 0.5, 1, 0.5, true); alert.addEventListener (MouseEvent.MOUSE_UP, opBackHandler);  else tween = new Tween (tfCont, "x", Strong.easeIn, tfCont.x, stage.stageWidth + tfCont.width, 1, true); tween.addEventListener (TweenEvent.MOTION_FINISH, reinicio); 

Paso 36: Vista de opciones

Esta función manejará las animaciones de Vista de Opciones..

 función privada showOptionsView (e: MouseEvent): void options = new OptionsView (); addChild (opciones); / * Estos son los valores de las opciones, tomados de las variables * / options.category.text = categories [categoría]; options.victory.text = cadena (victoria); options.lives.text = cadena (vidas); tween = new Tween (options, "x", Strong.easeOut, options.width, 0, 0.5, true); // Esto hace que la vista de opciones aparezca de derecha a izquierda / * Escuchas de botones * / options.back.addEventListener ( MouseEvent.MOUSE_UP, hideOptionsView); options.catButton.addEventListener (MouseEvent.MOUSE_UP, changeCategory); options.vicButton.addEventListener (MouseEvent.MOUSE_UP, changeVictory); options.livesButton.addEventListener (MouseEvent.MOUSE_UP, changeLives);  / * Esta función oculta la Vista de Opciones usando una animación * / función privada hideOptionsView (e: MouseEvent): void options.removeEventListener (MouseEvent.MOUSE_UP, hideOptionsView); tween = new Tween (opciones, "x", Strong.easeOut, 0, options.width, 0.5, true); tween.addEventListener (TweenEvent.MOTION_FINISH, removeOptionsView);  función privada removeOptionsView (e: TweenEvent): void / * Elimina el hijo * / removeChild (opciones); 

Paso 37: Función de Categoría

Esta función cambia la categoría, tomando el valor de la matriz de categorías..

 función privada changeCategory (e: MouseEvent): void category ++; if (category> = categories.length) category = 0;  options.category.text = categories [categoría]; 
<