2016-09-13 2 views
0

javaFX를 사용하여 간단한 2D 게임을위한 제어 시스템을 만들려고합니다. 나는 광범위한 연구를했고 아무 것도 생각 해낼 수 없었다.JavaFX에서 게임용 제어 시스템을 구현하려면 어떻게해야합니까?

내가 원하는 일 : 우주선을 제어하고 일시 중지 메뉴를 불러 오려면 일련의 특수 키 이벤트를 설정하고 싶습니다. 나는 종류의 장면에서 (이벤트 핸들러) setOnKeyPressed는 "방법은 인수 적용되지 않습니다 받기

gameScene.setOnKeyPressed(new EventHandler<KeyEvent>() { 
     public void handle(KeyEvent e) { 
      if (e.equals(KeyCode.P) { 

      } 
     } 
    }); 

유사한을 사용하여 표시하기 위해 일시 ​​정지 메뉴를 얻으려고 노력했다 (새로운 이벤트 핸들러() {}) "EventHandler의 형식 인수를 참조하여 경고. 나는이 표현의 예가이 정확한 방식으로 사용되는 것을 보았습니다. 'P'가 일시 중지 메뉴를 표시하는 키가되기를 원합니다. 왜이 오류가 나는지 확신 할 수 없습니다. 측면 투표에서 Scene이나 Pane을 표시하기 위해 어떤 메소드를 호출해야하는지 궁금합니다.

+0

수입을 확인하십시오. 그것이 'javafx.events.EventHandler'이고 다른 라이브러리의 관련없는'EventHandler' 인터페이스가 아닌 것이 확실합니까? – Douglas

답변

0

내가 한 방법은 장면의 루트 창에서 onKeyPressed를 설정하는 것입니다.

그래서

BorderPane root = new BorderPane(); 
root.setOnKeyPressed((KeyEvent e) -> { 
    if (e.getCode().equals(KeyCode.P) { 
     //Open Pause Menu 
    } 
}); 

EDIT 1과 같은 : 는 장면을 열 루트를 사용하는 것을 잊지 마십시오.

Scene gameScene = new Scene(root); 
stage.setScene(gameScene); 
stage.show(); 
+0

Micheal에게 답장을 보내 주셔서 감사합니다. 나는 당신의 절차를 가장 분명히 시도 할 것입니다. 내가 혼란스러워하는 한 가지는 getCode()가 KeyEvent 클래스의 멤버가 아닌 방법입니다. 나는 당신의 구현이 더 좋아진다. –

+0

KeyEvent는 호출 할 수있는 여러 함수가 있습니다. 따라서 이벤트가 명시 적으로 KeyCode와 같지 않으므로 e.equals (KeyCode.P) wpuld가 항상 false를 반환하거나 오류가 발생한다고 생각합니다. KeyEvent로 getCode()를 사용하면 (자), 그 KeyEvent에 관련 지을 수 있었던 KeyCode가 돌려 주어집니다. 자세한 내용은 오라클 문서를 참조하십시오. https://docs.oracle.com/javase/8/javafx/api/javafx/scene/input/KeyEvent.html –

+0

향후 참조 할 사항 Micheal; 나는 setOnKeyPressed를 사용할 때 keyEvent 타입을 선언 할 필요가없고 인자 e를 전달하는 것이 적절하다고 알았습니다. 이것이 100 % 정확한지 여부를 알려 드리겠습니다. –

관련 문제