matiko101 Temat założony przez niniejszego użytkownika |
Mysz nad sprajtem » 2014-01-02 18:57:09 Witam, Zaznaczam, że SFML uczę się od kilku dni. W jaki sposób mogę uzyskać informację czy wskaźnik myszy znajduje się aktualnie nad sprajtem i ewentualnie w którym miejscu sprajtu? Próbowałem tak: if( zdarzenie.mouseMove.y == menu.getGlobalBounds().height && zdarzenie.mouseMove.x == menu.getGlobalBounds().width )
Ale w ten sposób nie wiem gdzie muszę mieć wskaźnik myszy, aby to zadziałało. Chodzi mi oto żeby obojętnie w,którym miejscu na sprajcie znajdował się wskaźnik myszy i coś się wtedy działo, a nie w określonym miejscu (chodź umiejętność ustalania tego miejsca też by się przydała) Proszę o łopatologiczne wyjaśnienie, nie dokumentacja ;) |
|
pekfos |
» 2014-01-02 19:03:48 Jeśli chodzi o zwykłe naniesienie kursora, niezwiązane z ruchem, ani klikaniem, to nie używaj zdarzeń. Zamiast tego użyj sf::Mouse::getPosition(). Do sprawdzenia, czy punkt należy do obszaru sf::Rect<> (zwróconego z getGlobalBounds()), najlepiej użyć metody contains(). Całe sprawdzanie można więc załatwić jednym wywołaniem, bez rozdrabniania się na poszczególne współrzędne. Bardziej się tego wyjaśnić nie da. if( zdarzenie.mouseMove.y == menu.getGlobalBounds().height && zdarzenie.mouseMove.x == menu.getGlobalBounds().width )
|
Ciekawe, o czym myślałeś, formułując taki warunek.. |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2014-01-02 19:06:39 Tak zrozumiałem jeden z wygooglowanych informacji. Poczytam o tych rzeczach tylko gdybym chciał jeszcze dodać do tego kliknięcie ? np. Jest menu i chce żeby gdy się kliknie na sprajta start coś się stało |
|
MrPoxipol |
» 2014-01-02 19:06:49 sf::Vector2i mouse_pos = sf::Mouse::getPosition( window ); if( sf::Mouse::isKeyPressed( sf::Mouse::Left ) && sprite.getGlobalBounds().contains( static_cast < sf::Vector2f >( mouse_pos ) ) cout << "Kliknieto sprajta\n"; |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2014-01-02 19:15:55 Dzięki wielkie MrPoxipol i Pekfos
Mam jeszcze ostatnie pytanie. Co gdy mam całe menu w sprajcie "Start" "Wyjdź" itd,a nie w kilku sprajtach ? Jak to zrobić, by gdy kliknę na "start" był start a "wyjdź" było wyjście ? Chyba zrozumiecie moje pytanie :)
EDIT: MrPoxipol tam zamiast sf::Mouse::isKeyPressed nie powinno być sf::Mouse::isButtonPressed ? Przynajmniej tak mi działa :) |
|
pekfos |
» 2014-01-02 19:17:32 Poczytam o tych rzeczach tylko gdybym chciał jeszcze dodać do tego kliknięcie ? |
Wtedy najprościej na zdarzeniach. Współrzędne kliknięcia i przycisk myszy masz w obiekcie zdarzenia, w mouseButton (i tylko tam. Nie można tego mieszać z mouseMove) Co gdy mam całe menu w sprajcie "Start" "Wyjdź" itd,a nie w kilku sprajtach ? |
Wtedy musisz samemu określić obszary. To chyba logiczne. |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2014-01-02 19:21:54 Musisz musisz, gdybym tylko umiał ;P Nie mogę nigdzie znaleźć tak rozwiniętego kursu SFML jak np. ten tutaj w konsoli. ;/ |
|
pekfos |
» 2014-01-02 19:36:04 Co za problem znaleźć w dokumentacji getGlobalBounds(), zobaczyć, co to zwraca (będzie od razu link) i taki obiekt samemu stworzyć? |
|
« 1 » |