2015-09-20 1 views
0

Я работаю над небольшим проектом. Я проверяю, нажато ли место, но когда он нажат, он никогда не останавливается. Это мой код:C# WinApi KeyEven всегда верен после того, как я отпустил ключ

  bool bunnyJump = Program.ConfigUtils.GetValue<bool>("Bunny Jump"); 
     if (bunnyJump) 
     { 
      if (WinAPI.GetKeyState((int)Keys.Space) != 0) 
      { 
       Console.WriteLine("Space"); 
      } 
     } 

Я только хочу, чтобы сделать Console.WriteLine("Space"); когда Пробел удерживается в нажатом положении.

+0

Ваше сравнение неверно. Это должно быть 'if (WinAPI.GetKeyState ((int) Keys.Space) <0)' вместо этого. См. [GetKeyState] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms646301.aspx). – IInspectable

ответ

0
bool pressed = false; 
/*stuff*/ 
void Update() 
{ 
    /*stuff*/ 
    if (bunnyJump) 
     if (!pressed && WinApi.GetKeyState((int)Keys.Space) != 0) 
     { 
      Console.WriteLine("Space"); 
      pressed = true; 
     } 
     else if (pressed && WinApi.GetKeyState((int)Keys.Space) == 0) 
      pressed = false; 
    /*stuff*/ 
} 

Создать глобальное булево значение, начинающееся с того, что оно является ложным. Если клавиша пробела удерживается и она ложна, выведите сообщение и установите значение true. В противном случае, если пробельный ключ не удерживается, и это правда, установите для него значение false.

Смежные вопросы