2015-01-08 7 views
0

간단한 Java 게임을 작성 중이며 일시 중지/다시 시작 기능을 추가하는 동안 몇 가지 문제가 발생했습니다.간단한 Java 2D 게임 - 게임 다시 시작

내 주요 게임 루프는 다음과 같습니다

@Override 
    public void run() { 
     try { 

     while (true) { 
      if (!isPaused) { 
       Thread.currentThread().sleep(5); 
       diamondSpawner(); 
       collisionDetector(); 
       repaint(); 
      } else { 

      } 
     } 
    } catch (InterruptedException e) { 
    } 
} 

이 또한 내가 게임을 일시 정지 'P'를 눌러 사용자를 기다립니다 메인 클래스에 KeyListener을 추가했습니다. 불행하게도 문제는 KeyListener이 일시 중지 된 상태에서 키를 수신하지 않는 것입니다. 어떻게들을 수 있습니까? 내 문제를 해결 MadProgrammer

this.addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyPressed(KeyEvent evt) { 
       if (evt.getKeyCode() == KeyEvent.VK_P) { 
        isPaused = !isPaused; 
       } 
       helicopter.move(evt); 
      } 
     }); 
+1

왜 듣지 않습니까? 당신이 이벤트 디스 패칭 스레드를 차단하고있는 것처럼 들리 겠지만, 문제를 증명하는 실행 가능한 예제를 제공하는 것을 고려해보십시오. 다른 것들은 추측 할 수 있습니다 ... – MadProgrammer

+3

isPaused 변수를 휘발성으로 만들거나 AtomicBoolean을 사용해야 할 수도 있습니다. – MadProgrammer

+0

@MadProgrammer 감사합니다. 변수 도움 :) – Simon

답변

1

:

이 메인 클래스 '생성자의 모든 KeyListener이다. 변수 isPaused을 휘발성으로 만 변경하십시오. 감사합니다.