SFML 2.0:Keyboard :: isKeyPressed并不总是正确返回

时间:2012-09-08 18:20:48

标签: c++ sfml

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);

此代码基本上是唯一相关的代码。

当我和M和[n]箭头键[s]同时按住其他键时,m被按下时似乎返回false。 (即使它是)

我没有代码操纵它,破坏等,并且想要了解为什么会发生这种情况,以及如何解决它。

如果无法修复它,那么你能告诉我使用事件系统重建这个功能的最好方法吗?

1 个答案:

答案 0 :(得分:1)

根据评论,this link here解释说键盘存在固有的局限性。大多数键盘只能在任何给定时间注册一定数量的按键,并忽略任何后续按键,直到您释放一个或多个当前键。这不适用于修饰键(如Ctrl,alt和shift),因为这些键是专门处理的(因为它们旨在与其他键串联使用)。