我试图创建一个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变量,x=xVel+x;但未在函数中声明它,因此java假定它是this.x
x=xVel+x;
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可以具有的最大值
注意-此代码在某些迭代过程中不会移动对象,出于教学目的,我建议您针对此类情况进行更新