看板 C_Sharp 關於我們 聯絡資訊
XNA 關於鍵盤按鍵偵測 目前有些觀念想釐清一下~~ KeyboardState CurrentKeyBoardInput = Keyboard.GetState(); Keys[] keys = CurrentKeyBoardInput.GetPressedKeys(); 如果只是單純GetPressedKeys 假如按下"A" 會有好幾個A在GetPressedKeys那個queue裡 面 我找一些sample code有一種作法是 用timespan去計算間隔 希望不要在timespan設定的時間內再次去 Keyboard.GetState(); 這樣效果可以按著A不放 會有AAAAAAAAAAAAAAAA印出來 但在使用上感覺不是很順~ 另一個作法是 我自己看XNA document的範例改成 Update裡 Keys[] keys = CurrentKeyBoardInput.GetPressedKeys(); if (OldKeyBoardInput != CurrentKeyBoardInput) { .............................................. } OldKeyBoardInput = CurrentKeyBoardInput; 這樣竟然keys 就只會得到一個input 我不懂那個if到底怎麼判斷的..... 他會發生!= 的情形是因為 平常沒按 當有 KeyDown就發生!= 然後連續的press 都算是同一個state所以都是 == 所以他只會抓第一個A? ========================= 第一種做法 我是覺得有時候會 漏掉key 有時不靈敏可能是因為我定死 interval 所以請教 第二種作法的話 可否改成模擬 A按著不放的情況呢? 另外我發現 key得到的都是大寫字母.....我該怎麼判斷使用者是輸入大寫還是小寫呢?? 還有輸入數字都會出現D1 D2 D3....多了個D 有函式有辦法把它拿掉嗎? 以上 謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.15.66 ※ 編輯: QQ29 來自: 122.147.15.66 (04/26 13:10)
help0430:你是要取得組合鍵嗎?不然用IsKeyDown就好啦 04/30 10:32