[SFML2] Warunek - dwa zdarzenia
Ostatnio zmodyfikowano 2013-02-11 12:43
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. 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(); } } } |
|
Mrovqa |
» 2013-02-10 16:10:51 Obsługa zdarzeń - klawiatura, mysz i innesf::Event to unia, więc nie dziw się, że nie działa. Musisz sprawdzać typ zdarzenia. poz_x = zdarzenie.mouseMove.x; poz_y = zdarzenie.mouseMove.y; Nie widzę tu, byś to uczynił. |
|
wimmie Temat założony przez niniejszego użytkownika |
» 2013-02-10 16:23:40 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. |
|
Mrovqa |
» 2013-02-11 12:43:52 Wiesz jak działa unia? Z tego co widzę - nie wiesz. 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(); } } } |
|
« 1 » |