2013-02-01 1 views
0

이것은 첫 번째 게시물이므로 다른 정보가 필요하면 알려주십시오. Java GUI에서 게임을 만들고 있는데, 두 가지에 대한 빠른 질문이 있습니다. 나는 현재 다음과 같은 코드를 사용하여 맵에서 화면 팬에지도를 그릴 수 : 개인 클래스 MoveMap가 된 MouseMotionListener를 구현 {GUI 맵 패닝 Java

@Override 
    public void mouseDragged(MouseEvent e) { 

    } 

    @Override 
    public void mouseMoved(MouseEvent e) { 

     if(e.getX() > swidth-30){ 
      if(xmod+(columns*30) > swidth){ 
       xmod-=30; 
       repaint(); 
      } 
     } 
     else if(e.getX() < 30){ 
      if(xmod < 0){ 
       xmod+=30; 
       repaint(); 
      } 
     } 
     else if(e.getY() > sheight-30){ 
      if(ymod+(rows*30) > sheight){ 
       ymod-=30; 
       repaint(); 
      } 
     } 
     else if(e.getY() < 30){ 
      if(ymod < 0){ 
       ymod+=30; 
       repaint(); 
      } 
     } 
     else{ 

     } 

    } 

} 

유일한 문제는 마우스가 지속적으로 지속적으로 화면의 가장자리에 이동해야합니다입니다 팬. 내 질문은 화면의 가장자리에 마우스를 가지고 그래픽을 업데이트하는 동안 계속 팬하는 방법이 있다면? 두 번째 질문은 캐릭터가 움직이는 경우에도 적용 할 수 있을까요? 스레드가 가능한 해결책이 될 수도 있지만 사용법에 익숙하지 않은 것 같습니다. 고맙습니다!

답변

3

나는 이것을 달성하는 두 가지 방법을 생각할 수 있습니다. 당신은 할 수

...

필요에 따라 X/Y 위치를 업데이트하고 마우스를 화면 가장자리의 주어진 거리에 들어갔을 때 어느 화면을 다시 칠 것 javax.swing.Timer 시작

.

마우스 위치를 모니터링하는 배경 Thread를 사용 ...

당신은 수)과는 "트리거"영역에 진입 할 때를 업데이트 할 것이다 당신은 마우스가 밖으로 다시 이동로, 분명히 타이머를 중지 할 것 x/y 값과 다시 칠하기 트리거를 호출하여 EDT에 대한 호출을 다시 동기화하십시오.)

+0

빠른 응답을 보내 주셔서 감사합니다! 타이머 나 백그라운드 스레드가 어떻게 해결할 지 조금 혼란 스럽습니다. 내가 MouseMotionListener를 유지하는 것처럼? – yanman1234

+0

그래, 타이머가 작동하지만 마우스가 가장자리를 벗어날 때지도가 계속 이동합니다. 나는''Timer ".stop();을 가지고 있는데, 마우스가 떠난다는 것을 감지하지만 무시할 것으로 보인다. 어떤 제안? – yanman1234

+1

저는 지금 PC에 없지만 타이머와 동일한/단일 참조를 사용하지 않는 것 같습니다. – MadProgrammer