我正在制作一个SFML框架,所以我做了一个延迟时间的函数。我没有使用sf::sleep
,因为它会停止整个应用程序。所以我用了一个时钟,但它不起作用。这是代码:
void FM::time::waitForSeconds(float seconds){
bool finished = false;
float elapsedTime = 0;
sf::Clock clock;
while (!finished) {
elapsedTime += clock.getElapsedTime().asSeconds();
if (elapsedTime >= seconds) {
finished = true;
clock.restart();
}
}
}
答案 0 :(得分:0)
根据documentation,函数getElapsedTime()返回自上次调用sf::Clock::restart
以来或自创建对象以来的时间。这意味着变量elapsedTime
的值增长速度比您想象的要快。
如果您将整个while
循环更改为以下内容:
for(;clock.getElapsedTime().asSeconds() < seconds;); //Note the semi colon.
它应该有用。
我假设当你说它不起作用时,你的意思是说它“早”完成了。