我想在java和swt中开发一个小游戏。 出于这个原因,我必须对KeyEvents做出反应。 如何检查是否例如向上箭头键和'q'被按在一起?
提前致谢
菲尼亚斯
答案 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)
感谢您的回答! 我只是觉得我可以用很快的速度开发一个小乒乓球游戏,但我没有知道关键的绑定是如此难以处理!主要障碍是两个拨片必须以独立的方式移动(目前按键会干扰对手的移动,反之亦然)。