hallo, ich habe ein JFrame mit einem Panel, dass die paintComponent() Methode überschreibt.
Dabei wird ein Wurm gezeichnet und noch eine Frucht:
Wie man sieht, wird am Schluss auch das Hintergrund bild gezeichnet, namens "img", was eben ein awt.Image ist.
Das Ding ist, dass das Spiel ruckelt mit dieser Art der Implementierung.
Grund ist, dass die ganze Zeit das Hintergrundbild gemalt wird, was sehr aufwendig ist.
Im Prinzip muss ich das Hintergrund bild ja nur einmal malen.
Allerdings löscht super.paintComponent() ja jedesmal alles. Dann ist es wieder weg.
Wie kann ich der super.paintComponent() sagen, dass sie nur den wurm und die frucht löschen soll,
aber nicht das Image?
Damit ich das Hintergrund bild halt nur einmal zeichnen lasse am Anfang, und es nicht wieder gelöscht wird.
Danke
Dabei wird ein Wurm gezeichnet und noch eine Frucht:
Code:
protected void paintComponent(Graphics g){
super.paintComponent(g);
// draw worm
Cell[] body = w.getBody();
g.setColor(Data.L_BLUE); body[0].draw(g);
g.setColor(Data.BLUE);
for(int i = 1; i<w.getLength(); i++){
body[i].draw(g);
}
// draw fruit
g.setColor(Data.RED);
f.draw(g);
// draw Background Image
g.drawImage(img,0,0,this.getWidth(),this.getHeight(),this);
}
Wie man sieht, wird am Schluss auch das Hintergrund bild gezeichnet, namens "img", was eben ein awt.Image ist.
Das Ding ist, dass das Spiel ruckelt mit dieser Art der Implementierung.
Grund ist, dass die ganze Zeit das Hintergrundbild gemalt wird, was sehr aufwendig ist.
Im Prinzip muss ich das Hintergrund bild ja nur einmal malen.
Allerdings löscht super.paintComponent() ja jedesmal alles. Dann ist es wieder weg.
Wie kann ich der super.paintComponent() sagen, dass sie nur den wurm und die frucht löschen soll,
aber nicht das Image?
Damit ich das Hintergrund bild halt nur einmal zeichnen lasse am Anfang, und es nicht wieder gelöscht wird.
Danke