我在SFML中有一個時鐘和計時器,它測量秒數。我試圖讓後幾秒鐘內一定量的經過下一個動作發生(特別是4)這裏是我的代碼在經過的時間後做些事情C++ SFML 2
#include "stdafx.h"
#include "SplashScreen1.h"
using namespace std;
void SplashScreen1::show(sf::RenderWindow & renderWindow)
{
sf::Clock clock;
sf::Time elapsed = clock.getElapsedTime();
sf::Texture splash1;
sf::SoundBuffer buffer;
sf::Sound sound;
if(!buffer.loadFromFile("sounds/splah1.wav"))
{
cout << "Articx-ER-1C: Could not find sound splah1.wav" << endl;
}
sound.setBuffer(buffer);
if(!splash1.loadFromFile("textures/splash1.png"))
{
cout << "Articx-ER-1C: Could not find texture splash1.png" << endl;
}
sf::Sprite splashSprite1(splash1);
sound.play();
renderWindow.draw(splashSprite1);
renderWindow.display();
sf::Event event;
while(true)
{
while(renderWindow.pollEvent(event))
{
//if(event.type == sf::Event::EventType::KeyPressed
if(elapsed.asSeconds() >= 4.0f)
{
//|| event.type == sf::Event::EventType::MouseButtonPressed)
//|| event.type == sf::Event::EventType::Closed
return;
}
if(event.type == sf::Event::EventType::Closed)
renderWindow.close();
}
}
}
它確實在4秒後什麼都沒有。我相信我會錯誤地收集時間。我知道我的返回工作,因爲我用鼠標輸入嘗試它,它工作正常。
你確定,你想要4秒嗎?不只是4秒鐘過去了? – Skeen 2013-03-22 22:17:44
那麼,我希望返回值發生在4秒後,我不確定是否理解你的問題。 – freemann098 2013-03-22 22:19:20
那麼你現在擁有的代碼只會在if語句已經過去4秒的時候纔會運行(並且如果它的二進制表示與if語句中的表達式完全相同(相同的數字可以並且會有不同二進制表示在浮動)),而不是如果3.9999或4.00001秒已經過去,所以我認爲你想要的是> = 4.0秒 – Skeen 2013-03-22 22:22:01