因此,在跟踪用户输入的游戏循环功能内部被多次调用。我猜这是因为游戏循环每秒进行40次迭代,如果我按住键0.5秒,函数会被调用20次。我也尝试通过sfml事件来处理此问题,但是window.setKeyRepeatEnabled(false)
无法正常工作。我该如何解决?
//this gets called 20-30times
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
leftPlayerPoints++;
}
最佳答案
使用两个 bool(boolean) 标志:一个用于检查是否按下键,另一个用于检查操作是否已经发生。
简而言之
if (key_is_pressed)
{
if (!action_have_happened)
{
// Perform action...
action_have_happened = true;
}
// Else: Action have already happened this key-press, don't do it again
}
释放键后,将两个标志都重置为false
。
关于c++ - 函数被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62498071/