2013-07-14 111 views
6

我正在使用處理語言繪製隨時間增長的矩形。以下代碼不提供任何輸出。在處理環境中使用延遲()

void setup() 
{ 
    size(900,900); 
} 
void draw() 
{ 
    int edge=100; 
    for(int i=0;i<300;i++) 
    { 
     delay(100); 
     edge++;  
     rect(100,100,edge,edge); 
    } 
} 

我懷疑錯誤地使用了delay()函數。

回答

7

我建議使用millis()函數來滾動您自己的延遲系統。請參考this example

10

這是一個這樣的「滾動你自己的」延遲方法,這對大多數目的都很有用。只需更改傳入延遲方法的值以更改時間。例如,這僅僅大約每2秒輸出一次「開始」和「結束」。

void draw() 
{ 
    System.out.println("start"); 
    delay(2000); 
    System.out.println("end"); 
    delay(2000); 
} 

void delay(int delay) 
{ 
    int time = millis(); 
    while(millis() - time <= delay); 
} 
+0

此示例爲的println(),但不能用於繪圖形狀 - 在繪製任何東西之前,整個程序都會延遲 - 無論延遲放置在代碼中的什麼位置。 – Kokodoko

2

隨着處理,直到程序流量達到平局結束時,屏幕沒有得到刷新()
嘗試以下操作:

void setup() 
{ 
    size(900,900); 
    frameRate(10); 
} 
int edge = 100; 
void draw() 
{ 
    edge++;  
    rect(100,100,edge,edge); 
}