2013-10-16 79 views
-1

我想创建一个java方法,move()将改变我的对象(这是一个椭圆)的位置。我的椭圆有一个初始的x,y位置,所以我想通过从JComponent调用以下方法来沿着Jframe移动它。用java移动形状

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

回答

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应该有maxi其中X和Y可以

注妈妈值 - 这个代码在某些迭代不动的对象,为教学目的,我建议你更新这类案件

+0

@iilya谢谢。然而,它并没有移动(即动画),所以最终的图像是整个帧的各种形状,但他们并没有实际移动..任何建议 – user2809437

+0

你需要在绘制下一个之前清理背景 –

+0

你能详细说明“干净的背景”是什么意思? – user2809437