Zmiana koloru tła okna w SFML

Zmiana koloru tła okna w SFML
RU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 211
0

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

Kopiuj
 #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?

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

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

RU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 211
0

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

TF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

użyj

Kopiuj
sf::Clock

zamiast sleep

RU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 211
0

Nie wiem jak miał bym wykorzystać klasę

Kopiuj
sf::Clock

do uzyskania efektu Sleep

Kopiuj
.
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12316
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.