-1

我正在尝试创建一个 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;
    }
} 
4

1 回答 1

1

您正在使用 x 变量,x=xVel+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 可以有的最大值

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

于 2013-10-16T23:12:14.190 回答