SWT:检查是否同时按下了多个键

时间:2010-09-08 16:59:09

标签: java swt

我想在java和swt中开发一个小游戏。 出于这个原因,我必须对KeyEvents做出反应。 如何检查是否例如向上箭头键和'q'被按在一起?

提前致谢
菲尼亚斯

4 个答案:

答案 0 :(得分:5)

SWT没有压在一起的概念(除非你在讨论标准修饰键,如shift,alt等)。你可以做的是分别捕捉向上箭头和'q'键事件。如果时间是一个问题,那么你可以比较两个时间戳(KeyEvent中有一个时间字段)并确定你的定义是什么(50毫秒?你可能想要试验)。

如果q被用作修饰符,那么这更容易,因为你可以在按下q时设置一个标志,当按下向上箭头时你可以检查是否设置了q标志。这比担心时间安排要容易得多。当然,当钥匙被释放时,不要忘记清除q标志。

答案 1 :(得分:2)

实际上,你可以实现它。每个按键和按键都会触发它自己的事件,因此您可以确切地知道按键的时间和按键在什么时候按下了。

示例:当向下箭头的按键事件被触发时,您开始向右移动右击踏板。当X键的键击事件被触发时,您开始向下移动左键盘。当触发X键的键起事件时,您将停止移动左侧拨片,当触发向下箭头的键起事件时,您将停止移动右侧拨片。 =>你可以相互独立地控制它们。

您可以将所有这些包装在某种实用程序中,以使解决方案更清晰。

答案 2 :(得分:0)

rancidfishbreath的解决方案将起作用。有关一个很好的示例,请参阅http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet25.java

答案 3 :(得分:0)

感谢您的回答! 我只是觉得我可以用很快的速度开发一个小乒乓球游戏,但我没有知道关键的绑定是如此难以处理!主要障碍是两个拨片必须以独立的方式移动(目前按键会干扰对手的移动,反之亦然)。