2015-05-03 2 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

как-то не попадает в ifclause – user3656836

+0

@ user3656836 Пожалуйста, разместите обновленный код. –

+0

http://pastebin.com/6djK9PCN output wit global variable: http://prntscr.com/71ef9f вывод с локальной переменной: http://prntscr.com/71efsb – user3656836

Смежные вопросы