3

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

键盘输入轮询系统

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

粘贴代码

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

4

2 回答 2

3

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

在计算线程中,或者在轮询线程中,周期性地查询当前的key buffer。现在,您不再需要不断地查看 I/O,而是让事件侦听器来做这件事(它已经经过高度优化并干净地实现以使用底层硬件),同时您继续进行定期轮询。

于 2009-04-13T03:56:17.947 回答
1

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

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

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

于 2013-12-31T19:10:03.263 回答