Я работаю над игрой на C# и застрял. Таким образом, фон постоянно перемещается, и это делается в цикле с таймером, чтобы гарантировать, что фон перемещается последовательно. Теперь мне нужно проверить, нажал ли пользователь пробел, чтобы переместить плеер. Как проверить, есть ли событие keydown? Я не могу использовать событие события KeyDown, потому что игровой цикл постоянно работает, поэтому суб-событие KeyDown не работает. Просто ищите здесь какое-то направление. Благодаря!C# KeyDown Event in Game loop
ответ
В вашем случае клеща вы можете проверить
if (Keyboard.IsKeyDown(Key.Space))
{
... Do stuff
}
Ключевое слово "keyboard" не работает! – user3587182
Попробуйте капитализировать K? Какую версию .NET Framework вы используете, она должна быть доступна начиная с версии 3.0. –
Нет удачи с этим. Целевая платформа .NET Framework 4.5.2 – user3587182
Просто угадать, как вы не предоставил код.
Попробуйте позвонить Application.DoEvents();
в любой цикл и используйте KeyDown
, как вы планируете.
EDIT:
КИ, это означает, что вы не используете игровой цикл, но у вас есть событие, приводимое приложение (обычно приложение выигрыша). Звонок на Application.DoEvents()
позволяет окнам обрабатывать все обратные вызовы в обычном игровом цикле (а не в вашем случае).
Я обновил код еще раз, чтобы показать, как это работает - я считаю, обучение на примерах хорошо, но во-первых, вы должны изучить основы (извините, но игра слишком сложна для изучения C#) ...
private bool isKeyUpPressed;
private void tmrTick_Tick(object sender, EventArgs e) {
if (isKeyUpPressed)
{
// move player up
}
}
private void Form1_KeyDown(object sender, KeyEventArgs b) {
isKeyUpPressed = b.KeyCode == Keys.Up;
}
частной недействительным tmrTick_Tick (объект отправителя, EventArgs е) { // движущемся фоновой ... } частная пустота Form1_KeyDown (объект отправителя, KeyEventArgs б) { // Переместить игрока вверх } The Application.DoEvents(); не дает никакого результата. Код работает без ошибок, но не дает результата – user3587182
Какая переменная будет IsKeyPressed? – user3587182
'bool', конечно (указывается присвоением результата сравнения). Он будет (скорее всего) членом того же класса, где определены события. – Zoka
- 1. Game Loop Event Слушание
- 2. .Net Event KeyDown C#
- 3. Loop Iteration in Php Game
- 4. 'break' out loop in snake game
- 5. Event Organizer date in loop
- 6. libuv event loop in qt
- 7. attach event in loop, javascript
- 8. Form keydown in C#
- 9. Javascript textbox keydown event
- 10. Hangman Game in C
- 11. Fif Game in C++
- 12. Dynamic WebGL Draw in Game Loop
- 13. for loop in simple java car game
- 14. NSTextView keyDown Event
- 15. jQuery keydown event
- 16. jQuery keydown event disable
- 17. Keydown Event не срабатывает
- 18. Kendo Grid keydown event
- 19. d3.behavior.drag + keydown event
- 20. Keydown event: numpad +, */buttons
- 21. keycode on keydown event
- 22. C# - KeyDown Event, FunctionKeys и TextBox
- 23. Twisted wait for event in loop
- 24. Javascript For-loop in onChange event
- 25. Angular2 bind event/DOM in ngFor loop
- 26. Hangman game in object-c
- 27. Dice game pig in C++
- 28. Word guessing game in C
- 29. Hangman game in asp.net/C#
- 30. Game Maker - Touch Event
Что такое 'Интервал' на' tmrTick' установлен?? –
Интервал установлен на 100 мс. – user3587182