Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML2] Warunek - dwa zdarzenia

Ostatnio zmodyfikowano 2013-02-11 12:43
Autor Wiadomość
wimmie
Temat założony przez niniejszego użytkownika
[SFML2] Warunek - dwa zdarzenia
» 2013-02-10 16:03:57
Witam, napotkałem problem przy pisaniu swojej aplikacji. Chcę aby po najechaniu na pole prostokąta i przyciśnięciu LPM program się zamknął. Utworzyłem sobie zmienne które przetrzymuję pozycję myszy oraz warunek który powinien działać. Jeżeli trzymam te dwa zdarzenia osobno to oba działają, jednak kiedy chcę uzależnić jedno od drugiego program nie reaguje. Wstawiam kawałek kodu.

C/C++
while( okno.isOpen() )
{
    sf::Event zdarzenie;
    while( okno.pollEvent( zdarzenie ) )
    {
        int poz_y, poz_x;
        poz_x = zdarzenie.mouseMove.x;
        poz_y = zdarzenie.mouseMove.y;
       
       
       
        if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left )
        {
            if(( poz_x >= 1036 && poz_x <= 1289 ) &&( poz_y >= 69 && poz_y <= 706 ) )
            {
                okno.close();
            }
        }
    }
P-76102
Mrovqa
» 2013-02-10 16:10:51
» Kurs SFML 2.0, C++ » PodstawyObsługa zdarzeń - klawiatura, mysz i inne lekcja
sf::Event to unia, więc nie dziw się, że nie działa. Musisz sprawdzać typ zdarzenia.
C/C++
poz_x = zdarzenie.mouseMove.x;
poz_y = zdarzenie.mouseMove.y;
Nie widzę tu, byś to uczynił.
P-76104
wimmie
Temat założony przez niniejszego użytkownika
» 2013-02-10 16:23:40
C/C++
poz_x = zdarzenie.mouseMove.x;
poz_y = zdarzenie.mouseMove.y;
Nie ma z tym chyba problemu ponieważ w konsoli przy
std::cout << poz_x << "\n" << poz_y << std::endl;
poprawnie wyświetla pozycję myszy i aktualizuje z każdym przesunięciem o piksel.
P-76106
Mrovqa
» 2013-02-11 12:43:52
Wiesz jak działa unia? Z tego co widzę - nie wiesz.
C/C++
while( okno.pollEvent( zdarzenie ) )
{
    int poz_y, poz_x;
    poz_x = zdarzenie.mouseMove.x; // nie sprawdzasz typu eventu -- w wiekszosci przypadkow beda tu zwykle smieci
    poz_y = zdarzenie.mouseMove.y;
   
   
   
    if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Left ) // sprawdzasz typ eventu - OK
    {
        if(( poz_x >= 1036 && poz_x <= 1289 ) &&( poz_y >= 69 && poz_y <= 706 ) )
        {
            okno.close();
        }
    }
}
P-76132
« 1 »
  Strona 1 z 1