2009-04-13 69 views
3

我正在尋找一款高效的Java遊戲鍵盤輸入系統。目前我使用一些代碼,我發現在這裏:鍵盤輪詢系統

Keyboard Input Polling System

似乎但是有點低效率(請對代碼您的想法評論)。完整的代碼可以在這裏找到:

Pastebin Code

我纔剛剛開始考慮新的解決方案,並拉開了代碼,但沒有任何人有在主遊戲這樣的一個有效的方法有什麼建議循環(包括解釋)?任何幫助,將不勝感激。

回答

3

設置KeyEventListener;當被調用時,將當前密鑰放入一個一鍵緩衝區中。

在計算線程或輪詢線程中,定期查詢當前密鑰緩衝區。現在,您不必一直在偷看I/O,而是在繼續進行定期輪詢的同時,讓事件監聽器執行此操作(已經進行了大量優化,並且已經完全實施,以使用底層硬件)。

+1

這對於遊戲中常見的多個鍵無效 – Ron 2013-12-31 18:15:04

1

我認爲這是很棒的代碼。鏈接作者已經通過鍵盤實現了拉式數據傳輸,而不是通常的KeyListener push方法。該實現支持N-key rollover,但是,USB的限制同時是6-8個按鍵。

如果你想清理它一點,那麼只存儲你想要關注的密鑰。但是,這並不會節省很多,每次按下某個鍵時,只有一個int被寫入數組。

你究竟發現什麼效率低下?對於初學者,我沒有看到鏈接代碼中的任何循環。