繁体   English   中英

在C#和XNA 4.0中检测多次按键

[英]Detecting multiple key presses in C# and XNA 4.0

我想检测在C#和XNA 4.0中是否同时按下了一组特定的键盘键。 我这样做与下面的代码:

KeyboardState keyState = Keyboard.GetState();

if(keyState.IsKeyDown(Keys.S) && keyState.IsKeyDown(Keys.K) && keyState.IsKeyDown(Keys.I))
{
    //Do something
}

该代码检测用户是否一次按下了“ S”,“ K”和“ I”。 但是,我注意到该代码在一台计算机(Windows 8.1便携式计算机)上运行良好,而在另一台计算机(Windows 8台式机)上运行良好。 另外,我最初希望if语句检查用户是否也按住P键(一次同时按下“ S”,“ K”,“ I”和“ P”),但是要添加第四条件(keyState)。 IsKeyDown(Keys.P)),代码在两台计算机上均不起作用。 为什么此代码不能在多台计算机上使用? 当尝试一次检测三个以上的键时,为什么会出现故障并且根本不起作用?

这很可能是硬件问题(称为键盘重影 ),而不是软件问题。 以我的经验,最常见的情况是按下3键,而第4键几乎破坏了所有传统键盘。 链接是对此问题的详细说明,并进行了测试以查看它是否确实是您遇到的键盘重影。

因为这是硬件问题,所以您在代码中无能为力,除了重新设计它以使其适合硬件外,即不需要三个键按下或不同的键...

如果您确实希望此代码有效,请购买具有6键翻转(最多6键)或n键翻转(键盘上的所有键)的键盘。 此功能意味着可以同时同时按下键盘的所有键,而计算机仍可以检测到所有键。

哦, 是一个出色的视频,以非常简单的方式解释了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM