2012-01-20 3 views
8

저는 최근 자바 게임에서 2 차원 게임을 해왔고 현재 이벤트 처리 시스템을 올바르게 작동 시키려고합니다. 나는 애니메이션을 시작하기 위해 마우스 클릭을 얻으 려하고 있었고, 클릭하는 동안 마우스를 움직이려고 시도 할 때까지 작동했습니다. 이 시점에서 아무 일도 일어나지 않습니다. mouselistener 클래스와 mousemotionlistener 클래스를 모두 사용하고 있으며 문제는 여전히 지속됩니다.마우스가 움직일 때 자바 마우스 이벤트가 무시됩니까?

public class ML extends MouseAdapter{ 
    public void mouseClicked(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1) 
     guns.playOnce(); 
    } 
    public void mouseReleased(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1); 
    } 

그것은 한 번 이미지의 집합을 재생하고 정지 애니메이터 클래스를 호출 다음은 홈페이지에서 코드입니다. 마우스 이벤트를 포함하기 전에 애니메이터가 완벽하게 작동했습니다. 왜 마우스 동작 중에 특정 동작이 수행되지 않으면 마우스 동작 중에도 작동하지 않는 이유를 알 수 없습니다. (자바가 너무 오래 전에 시작된 것은 분명한 해결책입니다.)

답변

6

자바에서는 마우스를 움직이지 않고 마우스를 눌렀다가 놓으면 마우스 클릭 만 등록됩니다. 이것은 대부분의 사용자가 수행하기가 어렵 기 때문에 대부분의 UI 요소 (예 : 버튼)는 마우스 누르기 및 놓기 이벤트에 반응하고 "클릭"을 무시합니다.

버튼의 경우 더 좋은 방법은 ActionListener을 추가하는 것입니다. 그런 다음 버튼 자체가 마우스 이벤트를 듣고 클릭 한 시간을 결정합니다.

+0

감사! 클릭에 대한 힌트는 나중에 좌절감을 덜어 줄 것입니다. – Ryan

+2

@trashgod : 사실, ButtonModel은 상태를 추적합니다. 마우스 이벤트를 수신하고 모델을 업데이트하는 것은 ButtonUI입니다. –

관련 문제