私はJavaFXを初めて使いました.JavaFXを使って簡単な2Dゲームを作りたかったのです。私はこれをよく読んだJavaFX game tutorialを読んだ。私は次の構造の簡単なゲームを書いた:複数の画面を持つJavaFXゲーム
public class MyGame extends Application
{
(...)
public void start(Stage theStage)
{
(...)
Group root = new Group();
Scene theScene = new Scene(root);
theStage.setScene(theScene);
Canvas canvas = new Canvas(800, 600);
root.getChildren().add(canvas);
(...)
theScene.setOnMouseClicked(
new EventHandler<MouseEvent>()
{
public void handle(MouseEvent e)
{
//mouse events
}
});
final GraphicsContext gc = canvas.getGraphicsContext2D();
(...)
final LongValue lastNanoTime = new LongValue(System.nanoTime());
new AnimationTimer()
{
public void handle(long currentNanoTime)
{
double elapsedTime = (currentNanoTime - lastNanoTime.value)/1000000000.0;
lastNanoTime.value = currentNanoTime;
//drawing all sprites with gc etc.
}
}.start();
theStage.show();
}
}
そして私は結果にとても満足していた。ゲームにはメニューなどはなく、ゲーム自体は1つの画面しかありませんでした。問題は、アプリケーションを拡張していくつかの異なるゲームを追加したいということです。つまり、いくつかの異なる画面(メインメニューと各ゲーム)を処理し、それらの間を切り替える必要があります。私はインターネットで助けを探しましたが、私が見つけたのは、実際に使っていないFXMLの例でした。
私の質問は次のとおりです。今私が持っている構造を考えれば、他のいくつかの画面を簡単に作成し、それらの間を切り替えるにはどうすればいいですか?
この質問はあまりにも広すぎるようです:どの特定の部分があなたと付き合っていますか?メニューを作成しますか?メニュー項目を選択するユーザーに反応しますか?レイアウトをしていますか?アプリケーション全体を構造化しますか?あなたはたぶん何かを試して、あなたが立ち往生したときに特定の質問を投稿する必要があります。まず、 'MenuBar'(または' ToolBar')を上にして 'BorderPane'を使うことを考えてみましょう。ユーザーがゲームを選択したときに中心を変更します。各ゲームのコードを別のクラスに組み込む:おそらく、アプリケーションを構造化するための私の答えをhttp://stackoverflow.com/questions/32464698/で見てください。 –
私が持っている正確な問題は、これまでゲームのメインループとして働いていたAnimationTimerのハンドルメソッドにどのように取り組むべきか分かりません。これはスプライトの更新、衝突のチェックなどです。これまでのところ、1つのゲームはメソッドを入力する前にすべてを開始してから、アプリケーションを終了するまでそこにとどまりました。さて、私はこの方法の中から一つのゲームを「終了」し、別のゲームを選択するためにメインメニューを表示する方法を知らない。 – user3018717
'AnimationTimer'は' stop() 'メソッドを持っています...そうでなければ、あなたは何をする必要があるか正確に説明したと思います。 –