gpt4 book ai didi

c++ - 耗时 C++ SFML 2 后做某事

转载 作者:行者123 更新时间:2023-11-30 04:19:49 26 4
gpt4 key购买 nike

我在 SFML 中有一个时钟和计时器,它测量秒数。我试图在经过一定秒数(特别是 4 秒)后执行下一个操作 这是我的代码

    #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 秒后它什么都不做。我相信我错误地收集了耗时。我知道我的返回是有效的,因为我用鼠标输入尝试过它并且效果很好。

最佳答案

你的代码现在看起来很好,除了你应该在循环内更新你的 elapsed 变量(从你的时钟读取它)。

目前您只读了一次,并多次将该静态值与 4 进行比较。

时间类型代表一个时间点,因此是静态的。

你的代码应该是;

...
while(renderWindow.pollEvent(event))
{
elapsed = clock.getElapsedTime();
// Rest of the loop code
...
}

关于c++ - 耗时 C++ SFML 2 后做某事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15580727/

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