Animation

julian.veh

Bekanntes Mitglied
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 ^^.

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 ;)
 

JCODA

Top Contributor
Du benutzt Swing ( indem du JFrame und JPanel benutzt), hier brauchst du dich nicht selbst um Doublebuffering kümmern (der Code in update )

So, da du Swing benutzt heißt die Zeichen-methode paintComponent(Graphics g), am anfang dieser sollte super.paintComponent(g) aufgerufen werden, warum das genau so ist findest du mit ein bisschen googlen selbst herraus.
 

julian.veh

Bekanntes Mitglied
Ok. Wenigstens habe ich es jetzt verstanden. ^^ liegt wohl daran, dass das was ich mir durchgelesen habe für Applets war und ich die Hälfte nicht verstanden habe.

Danke ;)
 
T

Tomate_Salat

Gast
Das ist zufälligerweise der Effekt. Aber super.paintComponent ruft nur die paintComponent vom JPanel auf.

Würdest du von JComponent erben, würde nichts passieren.

So schwer ist das nicht, zu sagen, dass der Hintergrund übermalt werden soll. Ich geb dir einen Tipp: [Japi]Graphics#fillRect(int, int, int, int)[/japi]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Animation/links-rechts Java Basics - Anfänger-Themen 9
G Animation Timer Nano Time Java Basics - Anfänger-Themen 2
J Animation eines Körpers auf der schiefen Ebene Java Basics - Anfänger-Themen 11
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
D Animation JPanel Java Basics - Anfänger-Themen 1
WetWer Animation JLabel Java Basics - Anfänger-Themen 2
A Animation einer Zahnradpumpe Java Basics - Anfänger-Themen 6
B Animation mit Thread(s) Java Basics - Anfänger-Themen 23
K Möglichkeiten um eine einfache Animation darzustellen Java Basics - Anfänger-Themen 7
C Animation nur einmal durchführen Java Basics - Anfänger-Themen 3
N Bilderarray als animation ablaufen lassen?? Java Basics - Anfänger-Themen 6
G Threads SuM Class Animation Java Basics - Anfänger-Themen 13
J .gif Animation Java Basics - Anfänger-Themen 4
M Animation in einem Multiplayerspiel Java Basics - Anfänger-Themen 3
S Animation nach bestimmter Zeit ausführen Java Basics - Anfänger-Themen 3
T Animation Java Basics - Anfänger-Themen 2
M Animation von Kreisen Java Basics - Anfänger-Themen 15
U Y-Animation Java Basics - Anfänger-Themen 3
K Animation: Ball fällt herunter Java Basics - Anfänger-Themen 2
G Zufalls Animation Java Basics - Anfänger-Themen 9
Luk10 einfach animation Java Basics - Anfänger-Themen 2
H Animation malen! Java Basics - Anfänger-Themen 2
S JTable mit Animation??? Java Basics - Anfänger-Themen 7
B Flash Animation SWF in Java absielen Java Basics - Anfänger-Themen 18
R Probleme mit Animation und der erstellung einer jar Datei. Java Basics - Anfänger-Themen 11
U Animation bleibt leer (weiß) Java Basics - Anfänger-Themen 5
T Animation übermalt panels Java Basics - Anfänger-Themen 6
M Simple Animation funktioniert nicht (JFrame, Canvas, Thread) Java Basics - Anfänger-Themen 6
S Desktop Animation Java Basics - Anfänger-Themen 15
T Abspeichern einer Animation in *.bmp Java Basics - Anfänger-Themen 12
K animation in applet, thread problem (?) Java Basics - Anfänger-Themen 3
K Animation warten lassen Java Basics - Anfänger-Themen 9
F Animation Java Basics - Anfänger-Themen 3
J Animation Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben