Я пытаюсь получить текстуру для включения и выключения, когда нажата клавиша F1, я могу заставить ее включить, но она не отключится снова, если я не использую отдельный ключ для этого.Как определить, нажата ли клавиша несколько раз в xna?
Это работает для меня:
if(Keystate.IsKeyDown(Keys.F1))
{
collisionhelp = true;
}
тогда я:
if(Keystate.IsKeyDown(Keys.F2))
{
collisionhelp = false;
}
но то, что я хочу, что второй раз нажать клавишу F1, то он устанавливает его ложным, но в настоящее время, что заставляет его просто не появляться вообще.
Я попытался это:
if(Keystate.IsKeyDown(Keys.F1))
{
collisionhelp = true;
if(collisionhelp == true && Keystate.IsKeyDown(Keys.F1))
{
collisionhelp = false;
}
}
нет кости на всех, кнопка, даже не делать ничего больше.
Должен быть способ сделать это в XNA, возможно, добавив 1 к целому числу каждый раз, когда нажата клавиша F1, и обнаруживает, может ли ее даже сделать, если false, и если ее странно, чтобы сделать ее правдой?
Я пытаюсь это, и его вызывая много мерцания, что это делает в точности? Я не очень-то знаком с этим! вы ставите перед собой, это инверсия столкновений? –
'!' Называется оператором [not] (https://en.wikipedia.org/wiki/Negation) и инвертирует логическое значение, поэтому '! True == false' и'! False == true'. Вы должны убедиться, что значение изменяется один раз для нажатия кнопки, чтобы предотвратить мерцание. Попробуйте изменить первую строку на 'if (Keystate.IsKeyDown (Keys.F1) && Keystate.IsKeyToggled (Keys.F1))' (не уверен в этом) –
@ Nero-One P.S. Если предыдущий не работает, я неправильно понимаю, что означает функция IsKeyToggled. В этом случае вы добавили ** [this] (http://stackoverflow.com/questions/13259841/button-press-calls-method-multiple-times) ** –