我正在用C ++开发一个小小的SFML游戏。我要做的是用一个闪烁两种不同颜色的介绍性文字开始游戏,比如“Arturo Girona Presents”。我通过使用在while(window.isOpen())循环内增加的计数器使其工作,但后来我尝试使用sf :: Clock来查看它是否使闪烁看起来不那么随机。但是,出于某种原因,当我没有明确地告诉它时,时钟在每个循环之后保持重置,因此它不会从文本屏幕转换。时钟如何自行重置,如何解决? 这是我的while循环:
int count = 0;
sf::Clock clock;
int timer = clock.getElapsedTime().asMilliseconds();
while (window.isOpen())
{
count++;
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
while (timer < 5000)
{
if (timer < 200 && introText1.getColor() == sf::Color::Red)
{
introText1.setColor(sf::Color::White);
window.draw(introText1);
window.display();
}
if (timer < 200 && introText1.getColor() == sf::Color::White)
{
introText1.setColor(sf::Color::Red);
window.draw(introText1);
window.display();
}
break;
}
if (timer == 5000) {
window.clear();
window.draw(door);
window.draw(doorWindow1);
window.display();
}
cout << timer << endl;
if (timer > 0)
cout << "Time is moving" << endl;
}
答案 0 :(得分:3)
时钟未被重置,您根本不会读取新值。 ; - )
在主循环内移动int timer = clock.getElapsedTime().asMilliseconds();
。
此外,您不希望while (timer < 5000)
循环,尤其是break
作为最后一句话。