Ich glaube, ich habe herausgefunden, woher mein Problem kommt. Wenn ich repaint() auskommentiere, bekomme ich das, was ich normalerweise bekommen würde. Ich habe einen Bildschirm mit einer Rennstrecke, die ich mit Rechtecken und 2 Autos erstellt habe. Offensichtlich sieht nichts so aus, als würde es sich bewegen, weil ich repaint() auskommentiert habe. Wenn ich es so ausführe, wie es ist, macht mein Programm eines von zwei Dingen. Entweder es funktioniert nicht oder es blinkt etwa 3 bis 5 Mal und hört dann auf. Wenn ich sleep() auskommentiere, blinkt das Programm einfach weiter, bis ich es beende. Die Autos bewegen sich, wie sie sollen. Ich weiß nicht, was ich falsch mache. Ich kann auch den Code für die eigentliche Strecke einfügen, wenn Sie möchten. Er ist einfach viel zu lang und ich denke, ich habe es auf das hier eingegrenzt.
private class MoveTwo extends Thread{
public void run(){
//infinite loop
while(true){
try{
repaint();//Refresh Screen
if(playerTwoSpeed<=5) playerTwoSpeed+=.2;//slow acceleration
playerTwo.y-=playerTwoSpeed;
Thread.sleep(100);//Delay
} catch(Exception e){
break;//Stop if there is an error
}
}
}
}
Hier ist es:
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.DARK_GRAY);
g.fillRect(0, 0, WIDTH, HEIGHT);
//Turn Border green when we draw.
g.setColor(Color.GREEN);
//fill rectangles.
g.fillRect(left.x, left.y, left.width, left.height);
g.fillRect(right.x, right.y, right.width, right.height);
g.fillRect(top.x, top.y, top.width, top.height);
g.fillRect(bottom.x, bottom.y, bottom.width, bottom.height);
g.fillRect(center.x, center.y, center.width, center.height);
g.fillRect(obstacle.x, obstacle.y, obstacle.width, obstacle.height);
g.fillRect(obstacle2.x, obstacle2.y, obstacle2.width, obstacle2.height);
g.fillRect(obstacle3.x, obstacle3.y, obstacle3.width, obstacle3.height);
g.fillRect(obstacle4.x, obstacle4.y, obstacle4.width, obstacle4.height);
g.fillRect(obstacle5.x, obstacle5.y, obstacle5.width, obstacle5.height);
g.setColor(Color.WHITE);//Change color to white.
g.fillRect(outerStart.x, outerStart.y, outerStart.width, outerStart.height);
g.fillRect(innerStart.x, innerStart.y, innerStart.width, innerStart.height);
g.setColor(Color.YELLOW);
g.fillRect(finish.x, finish.y, finish.width, finish.height);
//Player one is blue
g.setColor(Color.BLUE);
g.fill3DRect(playerOne.x, playerOne.y, playerOne.width, playerOne.height, true);
g.setColor(Color.RED);
g.fill3DRect(playerTwo.x, playerTwo.y, playerTwo.width, playerTwo.height, true);
}