Android Open Source - ANA A N A Hilo






From Project

Back to project page ANA.

License

The source code is released under:

GNU General Public License

If you think the Android project ANA listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package net.guimi.ANA;
//  w w  w.jav a 2s.  com
import java.util.ConcurrentModificationException;

import android.graphics.Canvas;

/**
 * Thread class to perform the so called "game loop".
 * 
 * @author martin (http://www.droidnova.com)
 * modified by Gimi (http://www.guimi.net)
 */
class ANAHilo extends Thread {
  static final int RETARDO = 12; // En milisegundos
    private Pantalla miPantalla;
    private boolean esEnMarcha = false;
    
    /**
     * Constructor
     * @param panel View class on which we trigger the drawing.
     */
    public ANAHilo(Pantalla panel) {
        miPantalla = panel;
    }
    
    /** @param run Should the game loop keep running? */
    public void ponEnMarcha(boolean en_marcha) {
      esEnMarcha = en_marcha;
    }
    
    /** @return If the game loop is running or not. */
    public boolean leeEnMarcha() {
        return esEnMarcha;
    }
    
    /**
     * Bucle de juego.
     * 1. Actualiza objetos
     * 2. Comprueba colisiones
     * 3. Dibuja la pantalla
     */
    @Override
    public void run() {
        Canvas c;
        while (esEnMarcha) {
            c = null;
            try {
                c = miPantalla.getHolder().lockCanvas(null);
                synchronized (miPantalla.getHolder()) {
                  sleep(RETARDO);
                  miPantalla.actualizaObjetos();
                  miPantalla.compruebaColisiones();
                    miPantalla.hiloDibuja(c);
                }
            } catch(InterruptedException e) {
                // En caso de que se interrumpa el hilo mientras est en la pausa (sleep)
          e.printStackTrace();
            } catch(NullPointerException e) {
                // En caso de que la pantalla este dibujando tras salir
          e.printStackTrace();
            } catch(ConcurrentModificationException e) {
                // Ocurre cuando termina un nivel y el hilo todava intenta actualizar objetos o comprobar colisiones 
          e.printStackTrace();
            } finally {
              // Desbloqueamos y enviamos el lienzo en la clasula "finally"
              // De esta forma nos aseguramos de no dejar la superficie en un estado inconsistente
              // si se produce una excepcin durante el juego
                if (c != null) {
                    miPantalla.getHolder().unlockCanvasAndPost(c);
                }
            }
        }
    }
}




Java Source Code List

net.guimi.ANA.ANAHilo.java
net.guimi.ANA.ANAJuego.java
net.guimi.ANA.ANA.java
net.guimi.ANA.AcelerometroGestor.java
net.guimi.ANA.AcelerometroInterfaz.java
net.guimi.ANA.Grafico.java
net.guimi.ANA.Pantalla.java
net.guimi.ANA.Preferencias.java
net.guimi.ANA.Puntos.java
net.guimi.ANA.Puntuaciones.java
net.guimi.ANA.SQLiteGestor.java
net.guimi.ANA.Splash.java
net.guimi.ANA.Tienda.java
net.guimi.ANA.Web.java