用java移动形状

时间:2013-10-16 23:06:59

标签: java swing animation

我正在尝试创建一个java方法,move()将改变我的对象的位置(这是一个椭圆)。我的椭圆有一个初始的x,y位置,所以我想通过从JComponent调用以下方法沿着Jframe移动它。

public class ShapeAnimation extends Shape {

    public void move() {
        xVel=(int)(Math.random()*11);
        yVel=(int)(Math.random()*11);

        x=xVel+x;
        y=yVel+y;
        if(x>this.x)
            xVel=xVel*-1;
        if(y>this.y)
            yVel=yVel*-1;
    }
} 

1 个答案:

答案 0 :(得分:1)

你在x=xVel+x;中使用x变量,但它没有在函数中声明,所以java假设它是this.x

因此您的代码如下所示:

this.x=xVel+this.x;
this.y=yVel+this.y;
if(this.x>this.x) // always false
    xVel=xVel*-1;
if(this.y>this.y) // always false
    yVel=yVel*-1;

您需要将其更改为:

int newX = xVel+this.x;
int newY = yVel+this.y;
if( (newX<0) || (newX>this.maxX) )
    xVel=xVel*-1;
else
    this.x = newX;
if( (newY<0) || (newY>this.maxY) )
    yVel=yVel*-1;
else
    this.y = newY;

maxX和maxY应具有x和y可以具有的最大值

注意 - 此代码在某些迭代期间不会移动对象,出于教学目的,我建议您为此类情况更新它