我在球类动画中的问题是球在直线上移动而留下了一条小道。我的预期输出是不应该有球的踪迹。
该代码确定球在X轴的一个方向上的移动。
public class App extends JFrame implements Runnable{
int x=0,y=250;
public void run() {
for(;;) {
try {
repaint();
x++;
Thread.sleep(10);
} catch(Exception e){}
}
}
public void paint(Graphics g) {
g.drawOval(x,y,30,30);
}
public static void main(String[] args) {
App frame= new App();
frame.setTitle("Bounce");
frame.setSize(400, 450);
frame.setVisible(true);
Thread t1 = new Thread(frame);
t1.start();
}
}
答案 0 :(得分:0)
您错过了super.paint
方法中的paint
:
public void paint(Graphics g) {
super.paint(g);
g.drawOval(x,y,30,30);
}
答案 1 :(得分:0)
这不是一个多线程问题,你永远不会“擦除”你为之前的x画出的椭圆。您的paint
方法需要调用super.paint()
才能清除之前的椭圆。这是here解释的,代码与您几乎完全相同,但没有您的问题!