Necesito que alguien me eche una mano con ésto:
Estoy haciendo un pequeño juego de naves basándome en un ejemplo que me pasó el famigo Trafuga y ya lo tengo casi listo salvo por una cosilla. Estoy intentando hacer que al matar un enemigo de un disparo aparezca una pequeña animación encima de él que represente una explosión (ya sabéis la típica animación de explosión de 4 o 5 sprites) y la mejor idea me pareció crear una clase "Animacion" que heredase de Thread para que pudiese llamarse desde el método "morir()" de la clase Enemigo, de forma que se ejecutase de forma independiente al Main, pero no consigo que funcione. El código de la clase animación es éste:
Ya he comprobado que llega bien la método "dibujar(BufferedImage imagen)".Código:package marcianitos; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.util.ArrayList; import javax.imageio.ImageIO; public class Animacion extends Thread{ //PROPIEDADES (CONSTANTES) private static final String RUTA_BASE = Main.miRuta() + "image" + File.separator + "anim" + File.separator; //PROPIEDADES (VARIABLES) private ArrayList <BufferedImage> imagenesAnimacion = new ArrayList(); private int numSprites, posX, posY, milisegundos; private Graphics2D g; //CONSTRUCTOR public Animacion(String [] rutaImagenes){ this.numSprites = rutaImagenes.length; for(int i = 0; i < this.numSprites; i++){ File f = new File(RUTA_BASE + rutaImagenes[i]); if(f.exists()) try{ this.imagenesAnimacion.add(ImageIO.read(f)); }catch(Exception e){} } this.numSprites = this.imagenesAnimacion.size(); } //INICIA EL HILO DE EJECUCIÓN @Override public void run(){ try{ for(int i = 0; i < this.numSprites; i++){ this.dibujar(this.imagenesAnimacion.get(i)); sleep(this.milisegundos); } }catch(Exception e){} } //INICIA EL PROCESO DE MUESTRA DE LA ANIMACIÓN public void mostrar(Graphics2D g, int posX, int posY, int milisegundos){ this.g = g; this.posX = posX; this.posY = posY; this.milisegundos = milisegundos; this.start(); } //DIBUJAR private void dibujar(BufferedImage imagen){ this.g.drawImage(imagen, this.posX, this.posY, null); } }
Alguien me echa un cable? Se os ocurre alguna forma mejor de hacerlo?
Un saludo y gracias!![]()


 
 
				
				
				
				
					
  Citar
				
				
				
			
Marcadores