2012-09-08 65 views
2
bool m_down = sf::Keyboard::isKeyPressed(sf::Keyboard::Key::M); 
bool up_down = sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Up); 
bool down_down = sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Down); 
bool left_down = sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Left); 
bool right_down = sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Right); 

此代碼基本上是唯一相關的代碼。SFML 2.0:鍵盤:: isKeyPressed並不總是正確返回

當我按住M和[n]方向鍵[s]的同時按住其他某個鍵時,它似乎在m被按下時返回false。 (即使它)

我沒有代碼操縱它,打破等,並希望一些洞察,爲什麼這是發生如果可能的話,以及如何解決它。

如果沒有辦法修復它,那麼您能否告訴我使用事件系統重建此功能的最佳方式?

+2

[This](http://gaming.stackexchange.com/a/6671)可能會有幫助。 – Alex

+0

嗯,如果我也使用基於事件的方法,那麼它會適用嗎? –

+1

我相信如此。任何時候你有太多的按鍵,鍵盤都會忽略和隨後的按鍵,直到其中一個按鍵出現爲止。無論如何,建立一個測試用例來進行仔細檢查並不困難。 – Alex

回答

1

根據意見,this link here解釋說,鍵盤有一個固有的限制。大多數鍵盤只能在任何給定時間只註冊一定數量的按鍵,並忽略任何後續按鍵,直到您釋放一個或多個當前鍵。這不適用於修飾鍵(如Ctrl,Alt和Shift),因爲這些鍵專門處理(因爲它們打算與其他鍵一起使用)。