Primero bajate las imagenes necesarias aqui...
Ahora importalas a la carpeta de tu proyecto en Eclipse, si no sabes como hacer esto puedes leer mi otro tutorial Como mostrar Imagenes en JAVA
Y bueno aca sta el codigo....
import java.awt.Color;
import
java.awt.Graphics;
import
java.awt.Graphics2D;
import
java.awt.Image;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.awt.event.KeyEvent;
import
java.awt.event.KeyListener;
import
java.awt.image.BufferStrategy;
import
java.io.IOException;
import
java.io.InputStream;
import
javax.imageio.ImageIO;
import
javax.swing.*;
public class Principal
extends JFrame implements Runnable {
Image []img;//declaramos
un vector de imagenes
Image fondo; //declaro
la imagen que sera el fondo
InputStream imgStream;
private
BufferStrategy estrategia;//llamo a la clase
int numeroImagen; //esta
variable controla que imagen mostrar
Timer timer1; //declaramos
nuestro Timer
int x; //la
variable que establece la posicion en x
boolean nomueve;
public Principal()
{
super("Animacion
Interna y Externa Sprite");
this.setSize(600,
250);
this.setVisible(true);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.createBufferStrategy(2);
estrategia =
getBufferStrategy();
numeroImagen = 1;//inicio
la variable con la primera imagen
x = 50;
nomueve = true;
this.addKeyListener(kl);
cargaImagen();
repaint();
run();
}
public void
cargaImagen(){
img = new Image[20];//inicializamos
el vector de tamaño 10
try {
imgStream = Principal.class.getResourceAsStream("images/fondo.jpg");//inicializo
la imagen de fondo
fondo = ImageIO.read(imgStream);
for(int i = 1 ; i
< 16; i++)//cargamos las imagenes en el
vector ojo mis imagenes se llamas 0.png,
1.png, etc
{
imgStream = Principal.class.getResourceAsStream("images/"+i+".png");
img[i] = ImageIO.read(imgStream);
}
} catch (IOException
e) {
// TODO
Auto-generated catch block
e.printStackTrace();
}
}
public void run() {
timer1 = new Timer(200,new
ActionListener() {
public void
actionPerformed(ActionEvent e) {
if (nomueve == true)
{
numeroImagen++;
if(numeroImagen >= 7)
{
numeroImagen = 1;
}
}
else
{
if(numeroImagen <= 7)//obligo a que la
imagen comienze a caminar en el fotograma
8
{
numeroImagen = 8;
}
numeroImagen++;
if(numeroImagen == 15)
{
numeroImagen = 8;
}
}
}
});
timer1.start();
}
KeyListener kl = new
KeyListener(){
public void
keyPressed(KeyEvent arg0) {
int codigo =
arg0.getKeyCode();
if(codigo ==
KeyEvent.VK_RIGHT)
{
nomueve = false;
x = x + 5;
}
}
public void
keyReleased(KeyEvent arg0) {
nomueve = true; //si
no hay teclas precionadas entonces el movimiento
normal de GORO
}
public void
keyTyped(KeyEvent arg0) {
// TODO
Auto-generated method stub
}
};
public static void main(String[]
arg)
{
new Principal();
}
public void
paint(Graphics g){
Graphics g3 = (Graphics2D)estrategia.getDrawGraphics();
g3.drawImage(fondo, 0, 0, 600,
250, null);
g3.drawImage(img[numeroImagen], x, 80, 90, 156,
null);
estrategia.show();
repaint();
}
}
|
Espero que les haya gustado, cualquier duda coloquenla en los comentarios junto con su mail...