如何在 while 循环中使用时钟
How to use a clock within a while loop
我正在编写游戏代码,我一直在尝试实现暂停游戏功能,当用户按下 R 时,游戏将暂停,x 次后再次按下 R 时,游戏将恢复。当用户按下 R 时,我已经让它工作,当按下任何其他键(如 M)时,游戏将恢复正常。但是,当我将 R 分配给暂停和取消暂停事件时,初始 R 会被检测到暂停和取消暂停,并且游戏会暂停几分之一秒然后继续。我试过在我的暂停循环中实现定时器和计数器但无济于事。我真正想做的是让用户在再次按下 R 之前必须等待 x 时间,这将解决问题,但由于某种原因我无法让 clock.getElapsedTime
在循环中工作.为什么是这样?这是我当前的代码:
case sf::Keyboard::R:
pause = true;
break;
//pause game
clock1.restart();
while (pause)
{
//cout << clock1.getElapsedTime.asSeconds();
//if (clock1.getElapsedTime.asSeconds() > 1.0)
//{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::R))
pause = false;
//}
}
尝试将 sf::sleep(sf::seconds(0.1)); 放在 while 循环之前。我有同样的问题。不知何故,如果我读取同一个字母的 isKeyPressed() 的值,那么在我第二次读取它时它不会改变,并且会假设它仍然被按下。稍作停顿解决了我的问题,所以请尝试它是否能解决您的问题。
请告诉我是否有效,我很感兴趣
我正在编写游戏代码,我一直在尝试实现暂停游戏功能,当用户按下 R 时,游戏将暂停,x 次后再次按下 R 时,游戏将恢复。当用户按下 R 时,我已经让它工作,当按下任何其他键(如 M)时,游戏将恢复正常。但是,当我将 R 分配给暂停和取消暂停事件时,初始 R 会被检测到暂停和取消暂停,并且游戏会暂停几分之一秒然后继续。我试过在我的暂停循环中实现定时器和计数器但无济于事。我真正想做的是让用户在再次按下 R 之前必须等待 x 时间,这将解决问题,但由于某种原因我无法让 clock.getElapsedTime
在循环中工作.为什么是这样?这是我当前的代码:
case sf::Keyboard::R:
pause = true;
break;
//pause game
clock1.restart();
while (pause)
{
//cout << clock1.getElapsedTime.asSeconds();
//if (clock1.getElapsedTime.asSeconds() > 1.0)
//{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::R))
pause = false;
//}
}
尝试将 sf::sleep(sf::seconds(0.1)); 放在 while 循环之前。我有同样的问题。不知何故,如果我读取同一个字母的 isKeyPressed() 的值,那么在我第二次读取它时它不会改变,并且会假设它仍然被按下。稍作停顿解决了我的问题,所以请尝试它是否能解决您的问题。
请告诉我是否有效,我很感兴趣