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, botów: 0