2016-09-13 10 views
0

私は、javaFXを使用して私の単純な2Dゲーム用の制御システムを作成しようとしています。私は徹底的な研究を行い、何かを考え出すことができませんでした。JavaFXでゲームの制御システムを実装するにはどうすればよいですか?

私がしたいこと:船を制御し、一時停止メニューを表示するための一連の特別なキーイベントを設定したいと思います。私はタイプのシーンで(イベントハンドラ)setOnKeyPressed」メソッドは、引数には適用されません取得この

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

      } 
     } 
    }); 

に似たものを使用して表示するために、ポーズメニューを取得しようとしていた(新しいイベントハンドラ(){} ) "EventHandlerの型引数を参照して警告します。私はこの表現の例がこの正確な方法で使われているのを見ました。私は 'P'をポーズメニューをプルするためのキーにしたい。なぜこのエラーが出るのかわかりません。サイド投票でシーンやペインを表示するためにどのようなメソッドを呼び出すべきか疑問に思っていますか?

+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

マイケルにお返事ありがとうございました!私はあなたの手続きを間違いなく試みます。私が戸惑うのは、getCode()がKeyEventクラスのメンバーではないことです。私はあなたの実装がより良いbtw好き! –

+0

KeyEventには、呼び出すことのできる複数の関数があります。だから私は、e.equals(KeyCode.P)wpuldが常にfalseを返す、またはイベントを明示的にKeyCodeに等しくないため、エラーをスローすると思います。 KeyEventでgetCode()を使用すると、そのKeyEventに関連付けられたKeyCodeが返されます。詳細は、oracle docsを参照してください。https://docs.oracle.com/javase/8/javafx/api/javafx/scene/input/KeyEvent.html –

+0

今後の参考になるものMicheal;私は、setOnKeyPressedを使用するときにkeyEvent型を宣言する必要がなく、引数eを渡すだけで十分であることを理解しました。これが100%正しいかどうかをあなたにお知らせします。 –