Hallo,
Ich bin zur Zeit an der Programmierung eins 2D Plattform Spieles. Die Steuerung der Figur funktioniert so weit, nur werden "alte" Positionsfiguren des Spielers weiterhin angezeigt.
Sprich, wenn ich mit der Figur nach rechts laufe, zeigt es die Figur auf dem vorhergehenden Platz auch an. Es scheint mir, als würde das JFrame nicht richtig aktualisiert werden.
Komischerweise wird die Figur auch erst angezeigt, wenn das Frame einmal vergrössert wurde. Vorher wird es nicht gezeichnet.
Hier hab ich ein einfaches Beispiel, welches einen Ball durch das Frame fahren lässt und das gleiche Problem besitzt.
Wenn ich hier die "Repaint()" Methode ausklammere, so zeigt es den neuen Standort des Balles nur an, wenn ich die Grösse des Fensters ändere.
Lasse ich die "Repaint()" Methode an der Stelle, so hinterlässt der rote Ball einen roten Strich.
Brauche dringend Hilfe!
Ich bin zur Zeit an der Programmierung eins 2D Plattform Spieles. Die Steuerung der Figur funktioniert so weit, nur werden "alte" Positionsfiguren des Spielers weiterhin angezeigt.
Sprich, wenn ich mit der Figur nach rechts laufe, zeigt es die Figur auf dem vorhergehenden Platz auch an. Es scheint mir, als würde das JFrame nicht richtig aktualisiert werden.
Komischerweise wird die Figur auch erst angezeigt, wenn das Frame einmal vergrössert wurde. Vorher wird es nicht gezeichnet.
Hier hab ich ein einfaches Beispiel, welches einen Ball durch das Frame fahren lässt und das gleiche Problem besitzt.
Wenn ich hier die "Repaint()" Methode ausklammere, so zeigt es den neuen Standort des Balles nur an, wenn ich die Grösse des Fensters ändere.
Lasse ich die "Repaint()" Methode an der Stelle, so hinterlässt der rote Ball einen roten Strich.
Brauche dringend Hilfe!
Code:
import java.awt.*;
import javax.swing.JFrame;
public class Ball extends JFrame implements Runnable
{
int x_pos = 10; // x - Position des Balles
int y_pos = 100; // y - Position des Balles
int radius = 20; // Radius des Balles
public static void main(String[] args)
{
Ball ball = new Ball();
}
public Ball(){
this.setVisible(true);
this.start();
this.setSize(new Dimension(200,200));
}
public void start ()
{
Thread th = new Thread (this);
th.start ();
}
public void run ()
{
while (true)
{
x_pos ++; // Verändern der x- Koordinate
repaint(); //Neuzeichnen....?
try
{
Thread.sleep (20);
}
catch (InterruptedException ex)
{
// do nothing
}
}
}
public void paint (Graphics g)
{
g.setColor (Color.red);
g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
}
}