SFML延迟使用时钟的时间不起作用

时间:2018-04-08 19:22:33

标签: c++ time sfml

我正在制作一个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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

根据documentation,函数getElapsedTime()返回自上次调用sf::Clock::restart以来或自创建对象以来的时间。这意味着变量elapsedTime的值增长速度比您想象的要快。

如果您将整个while循环更改为以下内容:

for(;clock.getElapsedTime().asSeconds() < seconds;); //Note the semi colon.

它应该有用。

我假设当你说它不起作用时,你的意思是说它“早”完成了。