KeyEvents是否像中断一样工作?

时间:2016-05-15 06:32:11

标签: java

我正在开发一个程序,根据我在KeyEvent中设置的变量退出循环。 这是它的外观

foldr

然后,在关键监听器中,我执行以下操作:

while(System.nanoTime() - startTime < 3000000000L) // 3 second timer
        {
            if(rightPressed)
                break;
        }

我遇到的问题是在3秒钟之前循环永远不会退出,即使我按下右箭头键,但“得分”变量也会相应更新。我对嵌入式系统比较熟悉,关键事件会中断当前运行的线程吗?或者它们如何运作?

1 个答案:

答案 0 :(得分:0)

更改你的while循环以拥有多个条件,这样你就可以摆脱它 if while while循环中的条件。

while(System.nanoTime() - startTime < 3000000000L && !rightPressed)

keyEvent内。您正在检查repeatcheck,如果值为truecodes的其余部分将因return语句而无法执行。这意味着rightpressed永远不会成真。将您的代码更改为keyevent

        rightPressed = true; 
        repeatCheck = true;
        if(matchRight){
            score++;
        }else{
            score = 0;
        }
        if(repeatCheck){
         return;
        }

由于您正在处理thread,因此在您的帖子中按threadexecuted之前,您的right可能是thread.sleep()这将给你一些时间来按right key