我正在尝试创建一个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;
}
}
答案 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可以具有的最大值
注意 - 此代码在某些迭代期间不会移动对象,出于教学目的,我建议您为此类情况更新它