如何通过键绑定同时运行代码块?

时间:2016-05-01 13:06:20

标签: java multithreading swing key-bindings

我目前正在学习如何使用键绑定。我正在玩弄我写的代码,我注意到当我按下两个键(箭头键)时,只有最后一个键会运行。我应该简单地使用KeyListener还是有办法让它工作?从它的游戏开始,它必须能够同时运行4个键。

>>> str(ord('x'))
'120'
>>> str(ord('ç'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 2 found
>>> 

这是代码

2 个答案:

答案 0 :(得分:2)

  

我注意到当我按下两个键(箭头键)时,只有最后一个键会运行

因为只为最后一个按键生成了事件

  

我应该只使用KeyListener

无论您使用KeyListener还是KeyBindings,都是如此。它是生成事件的操作系统。

  

从游戏开始,它必须能够同时运行4个键。

因此,解决方案是在按下/释放时跟踪每个键

结帐Motion Using the KeyboardKeyboardAnimation示例显示了如何使用KeyBindings完成此操作。

答案 1 :(得分:1)

在我的linked to answer中执行我的建议:

  • 使用Swing Timer创建游戏循环
  • 创建一个名为Direction的枚举,它包含UP,DOWN,LEFT和RIGHT项
  • 并且还有指示实际方向的int向量字段
  • 创建按下箭头键时更改的HashMap<Direction, Boolean>
  • 让游戏循环显示此地图,并根据方向映射到Boolean.TRUE来改变方向。
  • 设置您的密钥绑定,只需更改HashMap的状态即可。