Wahrscheinlich eine blöde Frage. Ich will gerade ein kleines Spiel erstellen. Meine Figur zieht aber eine Spur hinter sich her. Habe nicht nach einem festen Tutorial gearbeitet, da ich es vorziehe mir etwas durchzulesen und es hinterher selbst umzusetzen. Sonst erwische ich mich nämlich immer wieder selbst dabei, nur den Code abzuschreiben ^^.
ich dachte mit der Methode repaint() wird alles gelöscht und wieder gemalt?
Hoffentlich kann mir jemand helfen
Grüße
Java:
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SpielPanel extends JPanel implements Runnable {
private JFrame frame;
private Thread thread;
private Image maennchen = Toolkit.getDefaultToolkit().getImage("maennchen.png");
int x_pos = 10;
int y_pos = 10;
Image dbImage;
Graphics dbg;
public SpielPanel(int w, int h) {
this.setPreferredSize(new Dimension(w, h));
this.frame = new JFrame("Game");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setVisible(true);
run();
}
private void start() {
this.thread = new Thread(this);
thread.start();
}
@Override
public void run() {
while(frame.isVisible()){
doLogic();
x_pos++;
this.repaint();
try {
thread.sleep(10);
} catch(InterruptedException e) {
}
}
}
@Override
public void paint(Graphics g) {
g.drawImage(maennchen, x_pos, y_pos, null);
}
public void doLogic() {
}
public void update(Graphics g) {
if(dbImage == null) {
dbImage = createImage(this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics();
}
dbg.setColor(getBackground());
dbg.fillRect(0, 0, this.getSize().width, this.getSize().height);
dbg.setColor(getForeground());
paint(dbg);
g.drawImage(dbImage, 0, 0 ,this);
}
public static void main (String[] args) {
new SpielPanel(400, 300);
}
}
ich dachte mit der Methode repaint() wird alles gelöscht und wieder gemalt?
Hoffentlich kann mir jemand helfen
Grüße