gpt4 book ai didi

c++ - sfml 中是否有等同于 getch 的东西?

转载 作者:搜寻专家 更新时间:2023-10-31 02:15:16 24 4
gpt4 key购买 nike

目前我正在尝试创建一个仅使用 sfml 库的函数,其行为类似于 getch()(暂停直到找到一个键)。重要的是要注意,这应该在事件循环之外调用。我试过四处寻找类似的东西,但我什么也没找到。我当前的代码如下所示:

int waitForKeyboardHit (sf::Window *win) {
sf::Event event;
while (true) {
while (win->pollEvent (event)) {
if (event.type == sf::Event::KeyPressed) {
return event.key.code;
}
}
}
return -1;
}

虽然这在大多数情况下工作正常,但是如果任何 KeyPressed 事件在调用此函数之前进入事件窗口队列而不是函数立即结束而不是等到下一次键盘按下。我已经尝试寻找在调用此函数之前清除窗口事件队列的方法,但我也没有找到任何可以做到这一点的方法。

最佳答案

while (win->pollEvent(event)) ;(注意分号)将清除事件队列,但这可能不是您想要的方式:停止整个程序及其逻辑输入很少是一件好事。使用某种 FSA会更好,我相信。就像维基百科的这个例子,机器等待硬币(就像你等待按键):image

此外,您应该重绘场景并在 while(true) 循环中调用 display() 至少不时地刷新屏幕。

关于c++ - sfml 中是否有等同于 getch 的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38717426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com