某些代码存在问题......?

时间:2011-07-23 06:34:36

标签: java object graphics move

我正在制作一个程序(在java中),当你按下一个开始按钮时,它会形成一条线(通过制作一个移动的椭圆形而不是清洁屏幕而创建)从JWindow墙反弹回来。我有三个文件:一个主要方法,另一个带有ounceThreadFrame代码,最后一个带有球代码。这一切都有效,除了线不会从屏幕的左侧反弹。我应该如何更改它以使其反弹左侧?如果您需要其余代码,请告诉我。以下代码是ball move()方法的代码。

Graphics g=box.getGraphics();
    g.fillOval(x, y, xsize, ysize);
    x += dx;
    y += dy;
    Dimension d=box.getSize();
    if (x<0){
        x=0;
        x= dx;
    }
    if (x+xsize>=d.width){
        x=d.width-xsize;
        dx= -dx;
    }
    if (y<0){
        y=0;
        dy= -dy;
    }
    if(y+ysize>=d.height){
        y=d.height-ysize;
        dy= -dy;
    }
    g.fillOval(x,y,xsize,ysize);
}

2 个答案:

答案 0 :(得分:4)

这是问题所在:

if (x<0){
    x=0;
    x= dx;
}

设置x两次,而不是更改dx。在每个其他区块中,您正在改变位置,然后反转方向。我怀疑你想要:

if (x < 0) {
    x = 0;
    dx = -dx;
}

答案 1 :(得分:0)

问题在于语句x= dx;

我想你知道它应该是什么意思。这只是一个错字。一直发生。