2011-01-15 44 views
0

我正在處理一個小草圖,我正在使用時間函數繪製「時鐘」,並基於毫秒,秒和分鐘在畫布上繪製橢圓。我使用for循環來繪製所有的橢圓,每個for循環都在它自己的方法中。我在draw函數中調用每個這些方法。然而,由於某種原因,只有被調用的第一種方法正在繪製,理想情況下,我希望將它們全部呈現出來。[Processing/Java]可見性/分層問題

//setup program 
void setup() { 
    size(800, 600); 
    frameRate(30); 
    background(#eeeeee); 
    smooth(); 
} 

void draw(){ 
    milliParticles(); 
    secParticles(); 
    minParticles(); 
} 

//time based particles 
void milliParticles(){ 
    for(int i = int(millis()); i >= 0; i++) { 
     ellipse(random(800), random(600), 5, 5); 
     fill(255);  
    } 
} 

void secParticles() { 
    for(int i = int(second()); i >= 0; i++) { 
     fill(0);  
     ellipse(random(800), random(600), 10, 10); 
    } 
} 

void minParticles(){ 
    for(int i = int(minute()); i >= 0; i++) { 
     fill(50); 
     ellipse(random(800), random(600), 20, 20); 
    } 
} 

回答

2

是唯一一個正在執行你的第一個方法,因爲這肯定是假的,爲了使條件的for循環停止始終是真實的(我將永遠爲> = 0,如果你每一次把它加1你循環)。

我想你想修改您的for循環,像這樣:

for(int i = int(second()); i >= 0; i--) { 

這樣,我最初是0-59,並且會降低,直到它爲-1,在這一點上,我> = 0將是錯誤的。然後執行將退出for循環並傳遞給下一個方法。

我認爲這是你最初的意圖,除非你想讓每種方法同時並且無限期地運行(在這種情況下你應該使用線程)。

+0

你能鏈接討論線程的資源嗎?感謝您的回答。 – nnash

+0

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html –