我正在学习XNA(v。4.0),并且正在使用键盘上的箭头键移动精灵,并在保持空格的同时使字符冲刺。
下面是我的代码,用于确定按下了哪些键:
currentKBState = Keyboard.GetState();
bool right = currentKBState.IsKeyDown(Keys.Right);
bool left = currentKBState.IsKeyDown(Keys.Left);
bool up = currentKBState.IsKeyDown(Keys.Up);
bool down = currentKBState.IsKeyDown(Keys.Down);
bool space = currentKBState.IsKeyDown(Keys.Space);
System.Diagnostics.Debug.WriteLine(String.Format("{0} {1} {2} {3} {4}", right, left, up, down, space));
问题是我无法同时按下所有5个按钮。有时只有两个会注册。例如,如果我按住“上”,“下”和“左”,则无论我按住三个键多长时间,它仅表示“上”和“下”是正确的。无论按什么组合,我都希望能够处理。为什么不注册所有被按下的按钮?我需要采取其他方法吗?
那不是代码问题。这是键盘硬件的限制。
廉价的键盘能够可靠地检测到两个并发的按键,但是在三个键的某些组合下可能已经失败。
请参阅过渡(密钥)
现代键盘会检测重影,而不是注册第四个键,而是会忽略第三个键,这就是所谓的干扰。不同品牌和型号的键盘在按下时会卡住哪些键。由于大多数用户使用的键盘矩阵,当按下矩阵方格中的四个键中的三个键(例如QASW或JKUI)时,经常会发生卡纸和重影。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句