java - 使用多线程的 keyListeners / KeyBinding
问题描述
我正在尝试制作一个非常简单的游戏,但它仍然可能需要同时使用大约 8 个键。
使用 keyListener,我可以花费大约 3-4 个延迟,这是我不想要的。
我不知道如何使用 keyBinding,我认为它可以解决我的问题。(请不要只放这个链接,我已经看过它以及其他来源:https ://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html )
我的第一个猜测是将线程添加到 keyListener,但我不知道如何做到这一点,并且查找它并没有给我一个像样的答案。
private void makeKeyListeners() {
f.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch (key) {. . .}
}
@Override
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
switch (key) {. . .}
}
});
}
使用这个,我没有得到足够的输入(无法检测到同时按下的 8 个键)
所以我的大问题是;如何一次从 8 个以上的键中获取输入?
如果解决此问题的最佳方法是使用 keyBindings,您能帮我一个忙并深入解释它们吗?
解决方案
这是一个硬件问题。我去了http://blog.controlspace.org/2010/08/n-key-rollover-what-it-is-and-how-to.html?m=1(MadProgrammer 的评论)并测试了 3 个不同的键盘我自己的,他们的表现都不同。
推荐阅读
- node.js - 使用猫鼬在nodejs上传图像后如何制作数据库路径
- laravel - Laravel:如何在 Crinsane 购物车上传递其他参数
- vb.net - 如何确保从服务器向客户端发送多个串行数据
- java - java的Integer中为什么使用q = (i * 52429) >>> (16+3)而不是q= i /10?
- ios - Size-classes Autolayout 一些 UIStackViews 对于 CwRh 是隐藏的
- ruby-on-rails - Rails:如何获取当前的完整 URL 以及选项卡?
- angular - Karma jasmine 更改为 promise 后不模拟服务方法
- c# - 如何使用 FluentMigrator 创建一对一的外键
- machine-translation - 可以在使用稍微修改的标准测试集的同时比较 NMT 模型之间的 Test BLEU 分数吗?
- mysql - 将 Oracle PL/SQL 转换为 Mysql