一尘不染

用Java移动形状

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;
    }
}

阅读 261

收藏
2020-12-03

共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可以具有的最大值

注意-此代码在某些迭代过程中不会移动对象,出于教学目的,我建议您针对此类情况进行更新

2020-12-03