我正在用C#開發一款遊戲,並且陷入困境。所以背景一直在移動,這是通過一個定時器循環完成的,以確保背景一致移動。現在,我需要檢查用戶是否按空格鍵來移動播放器。我如何檢查是否有keydown事件?我不能使用KeyDown事件子,因爲遊戲循環一直在工作,所以KeyDown事件子將不起作用。只是在這裏尋找一些方向。謝謝!C#遊戲循環中的KeyDown事件
回答
在你的Tick事件,您可以檢查你沒有提供的任何代碼
if (Keyboard.IsKeyDown(Key.Space))
{
... Do stuff
}
「keyboard」關鍵字不起作用! – user3587182
嘗試使用大寫的K?你正在使用哪個.Net框架版本,這應該從3.0版本開始提供。 –
不要那樣。目標.NET框架是4.5.2 – user3587182
只是猜測。
嘗試在每個循環中調用Application.DoEvents();
,並按照您的意願使用KeyDown
。
編輯:
OK,這意味着您不使用遊戲圈,但你有事件驅動的應用程序(通常的Windows應用程序)。撥打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的) { // backgroung移動... } 私人無效Form1_KeyDown(對象發件人,KeyEventArgs b) { //移動玩家最多 } 的Application.DoEvents();不會產生任何結果。代碼沒有任何錯誤,但沒有給出結果 – user3587182
IsKeyPressed會是什麼樣的變量? – user3587182
當然是'bool'(通過分配比較值的結果來表示)。它將(很可能)是定義事件的同一班級的成員。 – Zoka
- 1. 遊戲不會停止事件循環
- 2. 遊戲循環事件監聽
- 3. 定時事件和requestAnimationFrame遊戲循環
- 4. 回合制遊戲設計:事件驅動vs.遊戲循環
- 5. SFML重複事件循環每次遊戲循環3次
- 6. 回合制遊戲的遊戲循環
- 7. C#簡單的2D遊戲 - 製作基本的遊戲循環
- 8. JAVA遊戲循環?
- 9. Win32遊戲循環
- 10. Javascript遊戲循環
- 11. 在遊戲循環
- 12. BlackJack遊戲循環
- 13. 簡單的遊戲循環與C++
- 14. Lua,遊戲狀態和遊戲循環
- 15. 文字遊戲 - 遊戲循環
- 16. 簡單的遊戲循環不循環?
- 17. 遊戲循環的問題
- 18. turbo c猜謎遊戲do/while循環
- 19. 麻煩循環.C++簡單遊戲
- 20. For循環猜謎遊戲C
- 21. C#GDI遊戲循環(FPS計數器)
- 22. C#遊戲循環和輸入
- 23. 如何在主遊戲循環中處理關鍵事件?
- 24. 可以在X11事件循環中捕獲遊戲杆/遊戲手柄事件嗎?
- 25. 遊戲循環中的滯後隨着遊戲的進展
- 26. 遊戲開發中的搖擺:遊戲循環
- 27. 遊戲循環中游戲對象的設計模式
- 28. ActionScript 3中的遊戲邏輯和遊戲循環
- 29. 在Android遊戲中放置主遊戲循環的位置
- 30. 遊戲主循環邏輯
'tmrTick'上的'Interval'設置爲?... –
間隔設置爲100 ms – user3587182