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

[SFML] konwertowanie pozycji myszy po zmianie widoku

Ostatnio zmodyfikowano 2012-01-04 23:42
Autor Wiadomość
Dawidsoni
Temat założony przez niniejszego użytkownika
[SFML] konwertowanie pozycji myszy po zmianie widoku
» 2011-12-30 23:39:43
Witam. W SFML zamiast skalować wszystkie obiekty na mapie można użyć widoków. Chcę, więc napisać aplikację pod rozdzielczość 800x600, a potem zrobić tak:
C/C++
RenderWindow Okno( VideoMode( 1024, 768, 32 ), "Nazwa" );
View widok( FloatRect( 0, 0, 800, 600 ) );
widok.SetCenter( 400, 300 );
Okno.SetView( widok );

Wszystko działa ładnie - obiekty na oknie same zmieniają swoje szerokości i wysokości. Jednak jest 1 problem. Program źle wykrywa pozycję myszki, czyli funkcja:
Vector2f punkt = sprajt.TransformToLocal(( float ) przycisk.GetMouseX(),( float ) przycisk.GetMouseY() );

nie działa poprawnie. Poprawne wykrywanie myszki można chyba (nie testowałem) uzyskać dzięki funkcji:
C/C++
Vector2f pozycja = oknoAplikacji.ConvertCoords( sterowanie.GetMouseX(), sterowanie.GetMouseY() );
Vector2f punkt = naszSprajt.TransformToLocal( pozycja );

Czy taka funkcja zapewni mi poprawne działanie programu?
Jednak ja mam w programie kilkanaście klas i w każdej z nich dosyć podobne takie funkcje. Mam także wiele innych klas, które chcę zaimportować do programu. Czy opłaca się pozmieniać ten kod w każdej z tych klas? Jak użyję tego sposobu, to będą mi działać wszystkie programy z zmianą wielkości okna?  A może lepiej zmienić funkcje GetMouseX() i GetMouseY() w klasie RenderWindow? Proszę o pomoc.
P-46755
DejaVu
» 2012-01-04 23:42:57
W kursie masz przecież opisany problem i jego rozwiązanie: » Kurs SFML 1.6, C++Tworzenie i wyświetlanie sprajtów lekcja
P-47269
« 1 »
  Strona 1 z 1