如果按“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 :(得分:1)
Thread.sleep(500);
只会阻塞线程500毫秒;它不会阻止线程接收键盘输入等OS消息。消息将简单地放在消息队列中,直到线程解除阻塞,此时它们将运行。如果您尝试在特定时间段内忽略用户输入,则需要自己跟踪时间并忽略该持续时间的输入。
long ignoreTime = System.currentTimeMillis() + 500;
...
if (System.currentTimeMillis() > ignoreTime) { // only process after 500 timeout
doProcessingForR();
}