[SFML] konwertowanie pozycji myszy po zmianie widoku
Ostatnio zmodyfikowano 2012-01-04 23:42
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:
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:
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. |
|
DejaVu |
» 2012-01-04 23:42:57 |
|
« 1 » |