Crear juego de "Busca las parejas" en Flash (2/2), la clase carta

  Compatibilidad del artículo: ActionScript 3.0.   

Esta clase se usa para la ejecución del Flash de "Busca parejas" (Crear juego de "Busca las parejas" en Flash (1/2)).

Para crear una clase en Flash, es sencillo, se abre el Flash y en crear nuevo, se pulsa en "Clase de ActionScript 3.0", o se va a Archivo->Nuevo (Control + N) donde aparecerá una pantalla como la siguiente:



A continuación, pinchar en donde está marcado como azul. A continuación aparecerá una ventana de interfaz para introducir el nombre de la clase, en nuestro caso, pondríamos "Carta".

En nuestro caso, la clase está en el mismo directorio que el fuente, por lo que se importa de la forma "import Carta;", sin embargo si estuviese dentro de algún subdirectorio, se importaría uniendo los subdirectorios por ".", por ejemplo si tuviese esta clase en "com/mcanam/clases/ejemplos", se importaría así:

import com.mcanam.clases.ejemplos.Carta

El paquete por lo tanto en este caso se declararía:

package com.mcanam.clases.ejemplos


Lo que habría que definir en el código serían las direcciones de las imágenes. El código coge las imágenes pasándolas un número, por lo que su estructura debe ser de tipo 1, 2, ... Por ejemplo, si tuviésemos las imágenes en los subdirectorios "carpeta1/carpeta2" y las imágenes, se llamasen imagenX.png (donde X sería el número), siendo la de reverso "reverso.png", los valores serían los siguientes:

private static const REVERSO:String = "carpeta1/carpeta2/reverso.png";    // URL del reverso
private static const URLIMGANT:String = "carpeta1/carpeta2/imagen";    // Comienzo de URL de las "cartas"
private static const URLIMGPOS:String = ".png";                        // Fin de URL de las "cartas"


Una vez explicado como crear la clase, explicamos el código paso a paso.

  1. Se crea el paquete (en nuestro caso, al estar en la raíz del proyecto sin parámetros), se importan los componentes necesarios de Flash y se crea la clase Carta.

    package {
        
        import flash.display.MovieClip;
        import flash.display.Loader;
        import flash.net.URLRequest;
        
        public class Carta
        {

  2. Se declaran las constantes. con la URL del "reverso" de las cartas. El comienzo y el final de cada imagen.

    // CONSTANTES A DEFINIR
            private static const REVERSO:String = "directorio/cartas/0.jpg";    // URL del reverso
            private static const URLIMGANT:String = "directorio/cartas/";    // Comienzo de URL de las "cartas"
            private static const URLIMGPOS:String = ".jpg";                        // Fin de URL de las "cartas"
            
  3. Declaración de variables publicas, es decir que se puede acceder a ellas desde fuera de la clase, el MovieClip de la Carta, su valor y si está bloqueada.

    public var mvCarta:MovieClip = new MovieClip();
    public var iValorCarta:int = new int(0);
    public var bBloqueado:Boolean = new Boolean(false);

  4. Se declaran las variables privadas, con los "cargadores", que contendrán la imagen mostrada (reverso) y la oculta.

    private var loader1:Loader = new Loader();
    private var loader2:Loader = new Loader();
    private var sOculto:String = new String();

  5. Se crea la función del constructor de la clase "Carta" que recibe como parámetro el valor de la carta. Guarda el valor de la carta, establece los "cargadores" de imagenes y le asigna el "reverso".

    public function Carta(iValor:int) {
                
        iValorCarta = iValor;
        
        sOculto = URLIMGANT + String(iValor) + URLIMGPOS;
        
        mvCarta.x = 100;
        mvCarta.y = 100;
        
        loader1.load(new URLRequest(sOculto));
        loader2.load(new URLRequest(REVERSO));
        mvCarta.addChild(loader2);
        
        mvCarta.buttonMode = true;
        
    }


  6. La función Carta_muestra mostrar el valor oculto de la "carta" en caso de no estar bloqueada, mientras que Carta_oculta hará lo contrario.

    public function Carta_muestra():void
    {
        if (!bBloqueado)
        {
            mvCarta.removeChildAt(0);
            mvCarta.addChild(loader1);
            //loader1.load(new URLRequest(sOculto));
        }
    }

    public function Carta_oculta():void
    {
        if (!bBloqueado)
        {
            mvCarta.removeChildAt(0);
            mvCarta.addChild(loader2);
            //loader1.load(new URLRequest(REVERSO));
        }
    }


ActionScript:
package  {
    
    import flash.display.MovieClip;
    import flash.display.Loader;
    import flash.net.URLRequest;
    
    public class Carta
    {
        
        // CONSTANTES A DEFINIR
        private static const REVERSO:String = "directorio/cartas/0.jpg";    // URL del reverso
        private static const URLIMGANT:String = "directorio/cartas/";    // Comienzo de URL de las "cartas"
        private static const URLIMGPOS:String = ".jpg";                        // Fin de URL de las "cartas"
        
        public var mvCarta:MovieClip = new MovieClip();
        public var iValorCarta:int = new int(0);
        public var bBloqueado:Boolean = new Boolean(false);
        
        private var loader1:Loader = new Loader();
        private var loader2:Loader = new Loader();
        private var sOculto:String = new String();
        
        public function Carta(iValor:int) {
            
            iValorCarta = iValor;
            
            sOculto = URLIMGANT + String(iValor) + URLIMGPOS;
            
            mvCarta.x = 100;
            mvCarta.y = 100;
            
            loader1.load(new URLRequest(sOculto));
            loader2.load(new URLRequest(REVERSO));
            mvCarta.addChild(loader2);
            
            mvCarta.buttonMode = true;
            
        }
        
        public function Carta_muestra():void
        {
            if (!bBloqueado)
            {
                mvCarta.removeChildAt(0);
                mvCarta.addChild(loader1);
                //loader1.load(new URLRequest(sOculto));
            }
        }
        
        public function Carta_oculta():void
        {
            if (!bBloqueado)
            {
                mvCarta.removeChildAt(0);
                mvCarta.addChild(loader2);
                //loader1.load(new URLRequest(REVERSO));
            }
        }
    }
    
}

Links relacionados:
Crear juego de "Busca las parejas" en Flash (1/2)
Importar vídeo y reproducir streaming con flash
Desordenar Array aleatoriamente en ActionScript
Pasar parámetros a la función dentro del addEventListener


Para cualquier duda, consulta, sugerencia, opinión, colaboración, etc; no dude en ponerse en contacto con nosotros

Copyright © 2002-2017 [McAnam]. Reservados todos los derechos.
www.mcanam.com