문제

Java로 게임을 작성 중인데 마우스 상호 작용이 필요합니다.MouseAdapter를 사용하려고 했는데 좀 살펴보니 클릭이나 액션이 이루어지지 않으면 마우스 포인터의 위치를 ​​알아낼 수 있는 수단이 없는 것 같더군요...이 작업을 수행하는 데 권장되는 방법은 무엇입니까?

몇 가지 질문:

  1. 마우스 "위치"는 모니터 경계, 게임 경계와 관련된 마우스 위치를 의미합니까, 아니면 이전 위치에 대한 움직임으로 표시됩니까?

  2. 마우스 포인터를 어떻게 비활성화합니까? 창문이 있는 애플리케이션?(즉.포인터를 움직이는 대신 마우스 움직임에 따라 플레이어의 시야가 회전하는 1인칭 슈팅 게임) 이것이 가능합니까?

도움이 되었습니까?

해결책

를보세요 마우스모션리스너.이를 통해 마우스 움직임을 추적할 수 있습니다.연결된 구성 요소 내에서 마우스의 위치를 ​​제공합니다.하지만 당신이 보면 Swing유틸리티 클래스에는 포인트를 화면이나 다른 구성 요소 또는 모니터로 변환하는 몇 가지 편리한 방법이 있습니다.

커서의 경우 커서에 대한 자체 비트맵을 설정할 수 있는 옵션이 있습니다. 여기.또는 최신 SO 답변을 보려면 다음을 참조하세요. 여기.따라서 커서를 숨기거나 빈 비트맵으로 설정한 다음 마우스 움직임과 이벤트를 가로채서 보기를 제어할 수 있습니다.

다른 팁

마우스 이벤트에 대한 튜토리얼은 다음 위치에 있습니다.http://java.sun.com/docs/books/tutorial/uiswing/events/mouselistener.html

여기를 보면:http://java.sun.com/javase/7/docs/api/java/awt/event/MouseEvent.html

화면에서의 절대 위치나 구성요소에 대한 상대적인 좌표를 얻을 수 있습니다.

방향을 변경하기 위한 움직임이 있는 경우 마우스 리스너를 제거해야 합니다. 또는 이벤트 핸들러가 아무 작업도 하지 않고 종료되는 로직을 가질 수 있습니다.내 생각에는 이것이 더 좋을 것 같습니다. 그렇지 않으면 청취자를 추가하고 제거할 때를 추적해야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top