-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 に答える