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:
sobre la cual obtengo el grafico2ddoubleBuffer = createImage(ManagedGame.width*32, ManagedGame.height*32);
Código:
graf = (Graphics2D) doubleBuffer.getGraphics();
en el metodo run (mi Jframe tmb implementa Runnable)
limpio el grafico
Código:
y llamo al paint de todos los objetos sobre este graficothis.graf.setColor(Color.WHITE); this.graf.fillRect(0, 0, doubleBuffer.getWidth(null), doubleBuffer.getHeight(null));
Código:
despues llamo a repaintManagedGame.level.paint(graf);
Código:
dentro del ManagedGame.level.paint(graf) recorro todas las celdas pintandolas en este orden:super.repaint();
primero el suelo y despues los soldados que tenga
Código:
el paint de ground y de la lista de entidades simplemente pintan una imagen en unas coordenadas: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); } }
Código:
He cambiado el orden de pintado pero el resultado es el mismo (cosa que no entiendo).public void paint(Graphics2D g) { g.drawImage(this.img, (int)this.position.x, (int)this.position.y, null); }
Como puedo solucionar este problema? y a que se debe?
Un Saludo y muchas gracias.
Dani.