2015-05-03 88 views
1

如果你按下「R」,數量應該增加1,但是如果你在程序等待時按下「R」,它不應該檢測到輸入。但隨着延遲和睡眠,程序會跟蹤輸入並在延遲後執行輸入。是否有任何功能需要等待,而不是獲得任何輸入?等待沒有輸入

import java.util.concurrent.TimeUnit; 
int amount; 

void setup() 
{ 
    size(200, 200); 

} 
void draw() 
{ 
    background(#FEF4E9); 
    fill(#FF0000); 

if (key == 'r'){ 
    //delay(500); 
    try{ 
     Thread.sleep(500); 
}catch(InterruptedException e){ 
    System.out.println("got interrupted!"); 
} 
    amount++; 
    println("amount: "+amount); 
} 
} 
+0

你可以在密鑰按下時顯示代碼嗎? – fdsa

+0

這是所有的代碼,它正在處理... – user3656836

+0

我們需要設置「key」的代碼。 – fdsa

回答

1

Thread.sleep(500);將簡單地阻塞線程500毫秒;它不會阻止線程接收操作系統消息,如鍵盤輸入。消息將被簡單地放在消息隊列中,直到線程解除阻塞,此時它們將運行。如果您試圖忽略特定時間段內的用戶輸入,則需要自己跟蹤時間,並簡單地忽略該時間段內的輸入。

long ignoreTime = System.currentTimeMillis() + 500; 
... 
if (System.currentTimeMillis() > ignoreTime) { // only process after 500 timeout 
    doProcessingForR(); 
} 
+0

不知何故,它不會在條款 – user3656836

+0

@ user3656836請發佈您的更新代碼。 –

+0

http://pastebin.com/6djK9PCN輸出機智全局變量:http://prntscr.com/71ef9f輸出與本地變量:http://prntscr.com/71efsb – user3656836