2013-10-16 80 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