小弟最近正在开发一个类似劲乐团的小游戏,基于JAVA.Swing,需要处理复杂的键盘事件,以前只知道用DirectInput可以,但是LINUX下就没有了,我希望能跨平台。请问JAVA里或者相关的其他东西有什么能解决这个问题的?
如果一个键按下不放,Swing的键盘监听者KeyListener会重复触发KeyPressed事件,这可不是我想要的结果,我希望的效果是:
对于指定的键,按下则触发一个事件,不会重复触发,直到它弹起,则触发弹起事件。而且Swing无法处理多个键的情况,但游戏要求能响应同时按下7个键。
不甚感激!
如果一个键按下不放,Swing的键盘监听者KeyListener会重复触发KeyPressed事件,这可不是我想要的结果,我希望的效果是:
对于指定的键,按下则触发一个事件,不会重复触发,直到它弹起,则触发弹起事件。而且Swing无法处理多个键的情况,但游戏要求能响应同时按下7个键。
不甚感激!
解决方案 »
- 请教一个关于interface的问题
- win7记事本编码问题,帮忙看看
- 期末到了,老师要求做项目,本人初学java,自写的代码运行不了,求高手们指点迷津啊
- 关于JFreeChart柱状图显示数值的问题?!!!
- IDE的问题
- 为什么我在unix平台上使用File的delete方法删除文件经常失败?
- 用java设计一个方法,在一个目录下面查找特定的唯一的文件,可能在目录的N级目录下.目录给定!谢谢!!
- 郁闷,散分。
- 大家来看这一句shell,如何不能生成指定的文本文件ip.txt?急!
- 谁知道Jprobe哪里有下
- 在线等,一个小问题,可我不会
- 为什么String作为参数和基本数据类型一样用的值传递?
一个比较简单的方法,对每一个键,建立一个bool变量,
在addKeyListener的keyPressed函数中,当你指定的键被按下后,与他对应的bool变量值为true
在keyReleased函数中,被按释放的键对应的bool变量值为false在判断复合键是否被按下时,只需要判断这几个键对应的bool变量是否都为true,如果都是,则他们都被按下了,执行对应的操作.
不过不直到这样是否需要多线程呢?我的意思是,一个线程监听键盘,一个线程监听bool数组?嗯,思路大概有了,谢谢Inhibitory!
创建一个监听器单件,拥有一个bool数组
当按下需要的键时,判断对应bool是否置true,若是,则说明此事件是重复激发,放弃事件。否则,对应的bool数组置true,激发事件处理函数。
释放按键时,对应bool置false感谢Inhibitory!
结帖给分