Ich versuche gerade eine simple Animation mit Swing zu erstellen, aber ich weiß leider nicht mehr weiter.
Ich hab den Code jetzt mal aufs nötigste herunter gebrochen.
Mein Problem ist, dass er die Figur direkt um 16 Pixel bewegt und er auch 16*50ms wartet, bevor er dies macht.
Ich weiß nicht mehr genau wie man dieses Problem löst.
Habt ihr eine Idee?
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
public class Canvas extends JPanel implements KeyListener {
private int positionX = 64;
private int positionY = 64;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(tilesetBufferedImage, positionX, positionY, positionX + 32, positionY + 32, 3 * TILESIZE, 3 * TILESIZE, 4 * TILESIZE, 4 * TILESIZE, null);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
animate();
repaint();
}
}
@Override
public void keyReleased(KeyEvent e) {
}
private void animate(){
for (int i = 0; i < 17; i++) {
positionX++;
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Ich hab den Code jetzt mal aufs nötigste herunter gebrochen.
Mein Problem ist, dass er die Figur direkt um 16 Pixel bewegt und er auch 16*50ms wartet, bevor er dies macht.
Ich weiß nicht mehr genau wie man dieses Problem löst.
Habt ihr eine Idee?