键盘轮询系统

时间:2009-04-13 03:08:05

标签: java swing keyboard-events game-loop

我正在寻找一种用于Java游戏的高效键盘输入系统。目前我正在使用我在这里找到的一些代码:

Keyboard Input Polling System

然而,这似乎有点低效(请评论您对代码的看法)。完整代码可在此处获取:

Pastebin Code

我刚刚开始研究新的解决方案并将代码分开,但是有没有人建议在主游戏循环(包括解释)中有效地执行此操作?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

设置KeyEventListener;调用时,将当前密钥放入一键缓冲区。

在计算线程或轮询线程中,定期查询当前密钥缓冲区。现在,不是在I / O上不断地窥视,而是让事件监听器做这件事(已经大量优化并且干净地实现以使用底层硬件),同时继续进行定期轮询。

答案 1 :(得分:1)

我认为这是很棒的代码。链接作者已经从键盘实现了拉式数据传输,而不是通常的KeyListener推送方法。此实现支持N-key rollover,但USB的限制是同时为6-8个键。

如果您想稍微清理它,那么只存储您想要注意的键。但是,这不会为您节省太多,每次按下一个键时,只有一个int写入数组。

你究竟发现什么效率低下?对于初学者,我在链接代码中看不到任何循环。