Na forum 4programmers.net korzystamy z plików cookies. Część z nich jest niezbędna do funkcjonowania
naszego forum, natomiast wykorzystanie pozostałych zależy od Twojej dobrowolnej zgody, którą możesz
wyrazić poniżej. Klikając „Zaakceptuj Wszystkie” zgadzasz się na wykorzystywanie przez nas plików cookies
analitycznych oraz reklamowych, jeżeli nie chcesz udzielić nam swojej zgody kliknij „Tylko niezbędne”.
Możesz także wyrazić swoją zgodę odrębnie dla plików cookies analitycznych lub reklamowych. W tym celu
ustaw odpowiednio pola wyboru i kliknij „Zaakceptuj Zaznaczone”. Więcej informacji o technologii cookie
znajduje się w naszej polityce prywatności.
Witam!
Chcę do swojej mini-gry 2D załączyć taki fragment kodu, który sprawdza jaki przycisk myszki został użyty przy kliknięciu.Jeśli LPM to w kompilatorze wyświetlane jest LPM. Później myślałem nad dodaniem Point do LPM, czyli jeśli gdzieś kliknę to kompilator mi napisze x,y klika.
Zacząłem od metody sprawdzającej BUTTON. Nie ma błędu, a nie chce działać? =.=
Udało mi się wrzucić fragment, który mi podałeś, dodałem również pola składowe public int x i y oraz implementacje mouselistener'a. Kompilacja nie wykazuje błędów, ale żeby ten programik zadziałał muszę chyba napisać metodę mouseReleased. Ktoś może mi tylko napisać mały zarys co tam uwzględnić? W dokumentacji nie wiele jest o mouseReleased.
mouseRealease działa dokładnie tak samo jak reszta. Po co w dokumentacji mieli więcej o tym pisać? Metoda wykonywana przy puszczeniu przycisku myszy, tyle w dokumentacji wystarczy. Wystarczy że zostawisz tą metodę pustą.
A przypisujesz listenera odpowiedniemu komponentowi?
Kod który podał bodzio877 jest wystarczający. Jednak zdarzenie obsługiwane przez mouseClicked jest złożeniem dwóch zdarzeń pierwszego mousePressed oraz następnie mouseReleased - tak jak Ci napisał Razi91.
Do gier z interfejsu MouseListener używa się wyłącznie metod mousePressed i mouseReleased. Obie metody używa się tak samo. Różnicą jest tylko stan klawiszy myszy. Pozostałe metody tego interfejsu mają sens tylko w środowisku GUI.
W ogólnym przypadku powinieneś używać bardziej zbiorczego interfejsu MouseInputListener lub klasy MouseInputAdapter i implementować wyłącznie metody mousePressed, mouseReleased, mouseMoved i mouseWheelMoved. Wszystkie inne zdarzenia myszy bazują na czterech podstawowych zdarzeniach związanych z tymi metodami i zostały wymyślone dla uproszczenia obsługi GUI.
Poniżej przykład jak to wykorzystywać. Obiekt takiej klasy trzeba oczywiście stworzyć i zarejestrować przez wszystkie metody addMouseListener, addMouseMotionListener i addMouseWheelListener.
Cały stan myszy będzie w każdej chwili odpowiadał polom tego obiektu. Oczywiście polom tym można dodać accessory, ale najczęściej nie jest to potrzebne bo klasa tego typu jest zwykle klasą wewnętrzną.