Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/02/2012, 12:51
nosek159
 
Fecha de Ingreso: octubre-2008
Mensajes: 118
Antigüedad: 15 años, 7 meses
Puntos: 2
paint(Graphics2D g) orden pintado

Hola a todos.

Estoy trabajando en un pequeño proyecto de un juego y de momento tengo el pintado del mapa y de 1 soldado en pantalla. El problema que tengo es que no importa el orden de pintado, cuando el soldado llega a ciertas coordenadas empieza a pintarse detrás del mapa y no entiendo porque.

http://imageshack.us/photo/my-images/836/33102410.png
http://img41.imageshack.us/img41/9716/51357100.png
http://img17.imageshack.us/img17/6564/25989732.png

Utilizo la tecnica del doble buffer, en el init del JFrame creo una imagen:

Código:
doubleBuffer = createImage(ManagedGame.width*32, ManagedGame.height*32);
sobre la cual obtengo el grafico2d
Código:
 graf = (Graphics2D) doubleBuffer.getGraphics();

en el metodo run (mi Jframe tmb implementa Runnable)

limpio el grafico
Código:
this.graf.setColor(Color.WHITE);
this.graf.fillRect(0, 0, doubleBuffer.getWidth(null), doubleBuffer.getHeight(null));
y llamo al paint de todos los objetos sobre este grafico
Código:
                        
ManagedGame.level.paint(graf);
despues llamo a repaint
Código:
super.repaint();
dentro del ManagedGame.level.paint(graf) recorro todas las celdas pintandolas en este orden:
primero el suelo y despues los soldados que tenga
Código:
public void paint(Graphics2D g) {
      ground.paint(g);
      for (int i = 0; i < maxEntities; i++)
      {
          if ( this.listEntities[i] == null ) continue;
          this.listEntities[i].paint(g);
      }
  }
el paint de ground y de la lista de entidades simplemente pintan una imagen en unas coordenadas:
Código:
public void paint(Graphics2D g) {
        g.drawImage(this.img, (int)this.position.x, (int)this.position.y, null);
    }
He cambiado el orden de pintado pero el resultado es el mismo (cosa que no entiendo).

Como puedo solucionar este problema? y a que se debe?


Un Saludo y muchas gracias.
Dani.