用java移动形状

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

你在x=xVel+x;中使用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可以具有的最大值

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