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

Mysz nad sprajtem

Ostatnio zmodyfikowano 2014-01-02 19:36
Autor Wiadomość
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:
C/C++
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 ;)
P-100978
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.

C/C++
if( zdarzenie.mouseMove.y == menu.getGlobalBounds().height && zdarzenie.mouseMove.x == menu.getGlobalBounds().width )
Ciekawe, o czym myślałeś, formułując taki warunek..
P-100979
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 
P-100980
MrPoxipol
» 2014-01-02 19:06:49
C/C++
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";
P-100981
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 :)
P-100983
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.
P-100984
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. ;/
P-100985
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ć?
P-100986
« 1 »
  Strona 1 z 1