Zmiana koloru tła okna w SFML

0

Cześć
Chce uzyskać zmianę koloru tła mojego okna (miganie), kod:

 #include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <Windows.h>




int main()
{

	sf::RenderWindow oknoAplikacji (sf::VideoMode(800, 600, 32), "Kurs SFML");

	while(oknoAplikacji.isOpen())
	{
		sf::Event zdarzenie;
		while(oknoAplikacji.pollEvent (zdarzenie))
		{

			if( zdarzenie.type == sf::Event::Closed )
			{
				 oknoAplikacji.close();
			}

			if(zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape)
			{
				 oknoAplikacji.close();
			}
			if(zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Middle)
			{
				oknoAplikacji.close();
			}
		}
		for(int i = 1; i<10; ++i)
		{
		oknoAplikacji.clear(sf::Color(255, 0, 0));
		Sleep(3000);
		oknoAplikacji.clear(sf::Color(255, 255, 255));
		}
		oknoAplikacji.display();
	}

    return 0;
}

Myślałem, że wystarczy dać do instrukcji if prosty warunek ale po uruchomieniu nic się nie dzieje.
Co robię źle?

0

A jaki jest efekt? Czarne tło, czerwone tło, białe tło?

0

Efekt jest dziwny, gdyż okno się zawiesza (nie uruchamia do końca?).

0

użyj

sf::Clock

zamiast sleep

0

Nie wiem jak miał bym wykorzystać klasę

sf::Clock

do uzyskania efektu Sleep

.
3

@rubesom - a dokumentacja także nie pomaga?

Poza tym - czy nie bardziej logiczne była by obsługa zdarzeń za pomocą switch? Bo póki co to wszystkie warunki masz sprawdzane mimo wszystko, a raczej tak być nie powinno; Po obsłudze zdarzenia pętla powinna być kontynuowana, a u Ciebie sprawdzane są kolejne warunki, które i tak nie zostaną spełnione;

Ja nie znam kompletnie SFML, ale to powinno działać jak standardowa pętla komunikatów, która zawsze budowana jest w oparciu o instrukcję wyboru; To oczywiście jest jedyne logiczne i sensowne rozwiązanie, a u Ciebie @rubesom nawet else nie ma, więc kod jest nieoptymalny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1