2017-05-12 72 views
0

我得到了一個處理程序,應該顯示100個環,每一個比前一個更大一點。當我運行我的程序時,它顯示出最大的1個環。我這種情況下從中間100px。obj doesnt變量

繼承人我的代碼:

Car[] myCar = new Car[100]; 
void setup(){ 
    size(500,500); 
    noFill(); 
    for (int i = 0; i != myCar.length; i=i+1) { 
    myCar[i] = new Car(i); 
    } 
} 
void draw(){ 
    for (int i = 0; i != myCar.length; i=i+1) { 
    myCar[i].drive(); 
    myCar[i].display(); 
    } 
} 
class Car{ 
    int c; 
    Car(int c_){ 
    c = c_; 
    } 
    void drive(){ 
    c = c + 2; 
    } 
    void display(){ 
    background(255); 
    noFill(); 
    stroke(10); 
    ellipseMode(CENTER); 
    ellipse(width/2,height/2,1+c,1+c); 
    } 
} 

我的問題是:爲什麼只顯示最大的戒指?

它可能是

for (int i = 0; i != myCar.length; i=i+1) { 
    myCar[i] = new Car(i); 
} 

莫名其妙犯規給變量 「i」 我的構造函數。 或即時通訊只是愚蠢的。我不知道。

在此先感謝

+0

您可以嘗試將值寫入控制檯,然後檢查它們是否正確。如果一切都很好,那麼你的顯示方法是不正確的。 – Thomas

回答

0

你不「看不到他們,因爲當你調用myCar[i].display(),該功能會清除一切,已經在屏幕上,並設置background(255),然後接着畫環。這種持續發生,你只看到一個環是越來越大的每一幀。

剛從display()功能刪除background(255),並使其成爲draw()第一行,你將有你想要的結果。

並不總是卜t在大多數情況下,background()setup()draw()中被調用,因爲它的作用是用顏色填充畫布的每個像素,請考慮一下。