有没有一种方法可以在SFML中接收到刚刚按下(而不是长按)的按键,或者模仿这种效果?
我在这里轮询我的事件,
当按下向上箭头时,这会使“decision”持续减少。使用“sf::event”,我是否可以在第一次按下它而不是按住它时读取它?
另外,如果不可能或者您不熟悉SFML,有没有什么方法可以用很少或没有全局变量来模拟这样的情况?(例如“is_already_held”),例如https://gamedev.stackexchange.com/questions/30826/action-button-only-true-once-per-press 我意识到这可能是唯一的方法(在更广泛的范围内声明一个变量),但我更喜欢不这样做,因为我不断退出作用域,并尽可能避免使用全局变量。
我在这里轮询我的事件,
while (window.pollEvent(event));
然后在循环中稍后,虽然超出范围但使用相同的事件,我读取:
if (event.type == sf::Event::KeyPressed)
{
if (event.key.code == sf::Keyboard::Up)
{
decision--;
if (decision < 0)
decision = CHARACTER_MAX - 1;
}
}
当按下向上箭头时,这会使“decision”持续减少。使用“sf::event”,我是否可以在第一次按下它而不是按住它时读取它?
另外,如果不可能或者您不熟悉SFML,有没有什么方法可以用很少或没有全局变量来模拟这样的情况?(例如“is_already_held”),例如https://gamedev.stackexchange.com/questions/30826/action-button-only-true-once-per-press 我意识到这可能是唯一的方法(在更广泛的范围内声明一个变量),但我更喜欢不这样做,因为我不断退出作用域,并尽可能避免使用全局变量。
while (window.pollEvent(event));
代码时,请注意结尾的分号;
,因为只有在这样做后,你才能获得最后一个事件。 - teh internets is made of catz