Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测C#和XNA 4.0中的多个按键_C#_Keyboard_Xna_State - Fatal编程技术网

检测C#和XNA 4.0中的多个按键

检测C#和XNA 4.0中的多个按键,c#,keyboard,xna,state,C#,Keyboard,Xna,State,我想检测在C#和XNA4.0中是否同时按下了一组特定的键盘键。我使用以下代码执行此操作: KeyboardState keyState = Keyboard.GetState(); if(keyState.IsKeyDown(Keys.S) && keyState.IsKeyDown(Keys.K) && keyState.IsKeyDown(Keys.I)) { //Do something } 此代码检测用户是否同时按下“S”、“K”和“I”。然而

我想检测在C#和XNA4.0中是否同时按下了一组特定的键盘键。我使用以下代码执行此操作:

KeyboardState keyState = Keyboard.GetState();

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

此代码检测用户是否同时按下“S”、“K”和“I”。然而,我注意到这段代码在一台计算机(Windows8.1笔记本电脑)上运行良好,但在另一台计算机(Windows8桌面电脑)上运行不好。此外,我最初希望if语句检查用户是否同时按住P键(“S”、“K”、“I”和“P”),但当添加第四个条件(keyState.IsKeyDown(Keys.P))时,代码在两台计算机上都不起作用。为什么这段代码不能在多台机器上工作?当试图同时检测三个以上的按键时,为什么会出现故障而根本不工作?

这很可能是硬件问题,而不是软件问题。根据我的经验,最常见的情况是3个键被按下,第4个键打破了几乎所有的传统键盘。该链接详细解释了这个问题,并测试了您是否真的遇到了键盘重影

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

如果您真的希望此代码正常工作,请购买具有6键滚动(最多6键)或n键滚动(键盘上的所有键)的键盘。此功能意味着可以同时按下键盘上的所有键,而计算机仍能检测到所有键


哦,这是一个很好的视频,用一种非常简单的方式解释了这个问题。

不同的硬件支持一次按下最多键数。对。我不知道。在这种情况下,有没有一种我可以使用的检测按键的替代方法?这不是软件问题。