[SFML 2.1] Problem z mouseMove.x
Ostatnio zmodyfikowano 2013-12-03 22:04
kokon Temat założony przez niniejszego użytkownika |
[SFML 2.1] Problem z mouseMove.x » 2013-12-02 20:26:38 Witam! Moim problemem jest to, że gdy nacisnę jakikolwiek przycisk, zmienna zdarzenie.mouseMove.x wynosi 0 lub 1 (odpowiednio do lewego i prawego przycisku myszki). Jak temu zapobiec i czemu tak się dzieje? PS: Nadmienię że tak się dzieje tylko w przypadku koordynatu X, Y działa normalnie. |
|
pekfos |
» 2013-12-02 20:31:22 Po co sprawdzasz mouseMove, skoro zdarzenie dotyczy naciśnięcia przycisku? |
|
kokon Temat założony przez niniejszego użytkownika |
» 2013-12-02 20:33:31 Ponieważ chcę sprawdzić czy kliknięty został obiekt na scenie, albo po prostu koordynaty. if( zdarzenie.mouseButton.button == sf::Mouse::Left && zdarzenie.mouseMove.x >= 195 && zdarzenie.mouseMove.x <= 545 ) |
|
pekfos |
» 2013-12-02 20:37:43 Pozycję kursora masz w mouseButton. |
|
kokon Temat założony przez niniejszego użytkownika |
» 2013-12-02 20:46:44 W sensie tak? zdarzenie.mouseButton.x Teraz to mi już w ogóle jakieś dziwne liczby wyskakują (a y jest zawsze równe 3) |
|
pekfos |
» 2013-12-02 20:49:05 Pokaż więcej kodu. |
|
kokon Temat założony przez niniejszego użytkownika |
» 2013-12-02 20:54:42 if( zdarzenie.mouseButton.button == sf::Mouse::Left && zdarzenie.mouseButton.x >= 195 && zdarzenie.mouseButton.x <= 545 ) oknoAplikacji.close(); sf::Event zdarzenie; sf::RenderWindow oknoAplikacji( sf::VideoMode( 1280, 680, 32 ), "..." ); Cała pętla (z usunięciem np. wyświetlania wszystkich grafik) while( oknoAplikacji.isOpen() ) { accumulator += clock.restart().asSeconds(); if( accumulator > TIME_STEP ) { oknoAplikacji.clear( sf::Color( 0, 0, 0 ) ); while( oknoAplikacji.pollEvent( zdarzenie ) ) { if( zdarzenie.type == sf::Event::Closed ) { oknoAplikacji.close(); } if( zdarzenie.mouseButton.button == sf::Mouse::Left && zdarzenie.mouseButton.x >= 195 && zdarzenie.mouseButton.x <= 545 ) oknoAplikacji.close(); }; std::cout << "X: " << zdarzenie.mouseButton.x << ", Y:" << zdarzenie.mouseButton.y << std::endl; accumulator -= TIME_STEP; } oknoAplikacji.display(); } Oraz zmienne do ograniczenia FPS: sf::Clock clock;
float accumulator = 0;
float TIME_STEP = 0.03f;
|
|
pekfos |
» 2013-12-02 21:12:40 Ten kod nie ma sensu. Po pierwsze, przy sprawdzaniu kliknięcia nie sprawdzasz, czy zdarzenie go dotyczy. Po drugie, wyświetlasz, dawno nieaktualne, wartości X i Y. |
|
« 1 » 2 |