2017-06-15 112 views
0

嗨Im使用java但我試圖做一個延遲,不會停止程序,但停止該代碼塊的種類,例如,如果我有一個方法,將1添加到變量我想它添加1然後等待一秒鐘,然後再加1,但延遲()停止整個程序和thread.sleep不適用於處理項目。如何延遲處理項目?

+0

處理正在運行一個主循環,對吧?你可以簡單地在開始時獲得時間戳。然後,只要你需要那個計數器的值(就像你說的那樣,應該每秒增加1),你再次檢查時間戳,並且可以很容易地計算已經過去了多少秒(=你的計數器)。 – domsson

+0

我該怎麼做,我是新來的Java和我剛剛開始星期一。 –

+0

With ['Timestamp.getTime()'](https://docs.oracle.com/javase/7/docs/api/java/sql/Timestamp.html) - 不確定這是否適用於Processing,但我猜那麼Processing就只是Java而已? – domsson

回答

0

您不應該在處理中使用delay()Thread.sleep(),除非您已經使用自己的線程。不要在默認的Processing線程中使用它(所以不要在任何Processing函數中使用它)。

取而代之,請使用frameCount變量或millis()函數來獲取事件啓動的時間,然後根據當前時間檢查該時間以確定何時停止事件。

下面是顯示當用戶點擊5秒一圈的例子:

int clickTime = 0; 
boolean showCircle = false; 

void draw(){ 
    background(64); 
    if(showCircle){ 
    ellipse(width/2, height/2, width, height); 

    if(clickTime + 5*1000 < millis()){ 
     showCircle = false; 
    } 
    } 
} 

void mousePressed(){ 
    clickTime = millis(); 
    showCircle = true; 
} 

邊注:請儘量當你鍵入要使用適當的標點符號。現在你的問題只是一個長時間運行的句子,這使得它很難閱讀。