HatenaPocket本稿は、JavaFXアプリケーションでゲーム制作するにあたり、画面遷移を実装する方法について考えてみましょう。JavaFXでは下記のような親子関係でオブジェクトを配置しています。if文で分割するのも非常に簡単でいいと思いますが、せっかくなのでこの親子構成を考慮した画面遷移を考えてみることにします。見たところ、Sceneクラスを差し替えて実装するかParentクラスを差し替えて実装するのが簡単そうです。どっちでもいいのですが今回は実装が楽そうなParentクラスの変更で画面遷移の実装をやってみます。ゲーム画面クラスのベースを作りたいと思いますが、どこからでも画面遷移の命令を呼び出したいので、すべてstaticメソッドでアクセスできるようにしました。下記のGameWindowFXクラスはinitメソッドで初期化パラメータを渡し、showメソッドでウィンドウを表示出来るように定義しました。ゲーム用ウィンドウとして初期化します。RuntimeException("既に初期化されています。ウィンドウを表示します。ウィンドウを閉じます。指定した引数の画面へ暗転処理とともに遷移します。画面遷移命令を実行できた場合はtrueを返します。指定した引数の画面へ遷移します。画面遷移に成功した場合はtrueを返します。view;}}ゲームの画面用の抽象クラスをParentクラスのサブクラスであるGroupクラスを継承したGameViewFXクラスとして定義します。GameViewFXにはサブクラスで利用したいメソッドを定義しておきます。今回はユーザー操作で画面遷移するものを作りたいのでmouseClickイベントが実行できるようにGameWindowFXからイベント伝番処理を実行し、GameViewFXにはmouseClickイベント用メソッドを空で定義しておきます。使用する場合はサブクラスでオーバーライドしてください。{}}マウスイベントしか定義していませんが、キーイベントやゲームループのメソッド等も定義しておけばもっと便利になりそうです。この二つのクラスを定義したおかげでGameViewFXを継承した画面を1画面として定義できるようになりました。e){//内容を判断して画面遷移}}今回のメインである画面遷移はGameWindowFX.change(GameViewFXオブジェクト)またはGameWindowFX.changeWithAnimation(GameViewFXオブジェクト)で実行できるようにしています。changeWithAnimationメソッドのほうを利用すると画面遷移時に暗転アニメーションを付与できます。(Java9以降のみ)それでは作成したクラスを利用し、ユーザー操作により画面遷移するプログラムを作成します。画面はタイトル画面、ゲーム画面、ゲームオーバー画面、ゲームクリア画面を想定します。それではサンプルをご覧ください。"クリックでゲームを開始します。"正方形だと思うほうをクリックしよう。"クリックでタイトルに戻ります。"クリックでタイトルに戻ります。Title());}}}実行結果タイトル画面ではマウスクリックでゲーム画面へ遷移。ゲーム画面では正方形か、円かをユーザーが判断し、正方形がクリックできればゲームクリア画面へ。クリックできなければゲームオーバー画面へ遷移します。ゲームクリア画面とゲームオーバー画面ではクリックでタイトル画面へと遷移します。今回はソースが少し長くなってしまいましたが画面遷移の方法の一つとして参考になれば嬉しいです。【Java】複数端末間の通信を簡単に実現できるマルチキャスト通信マルチキャストを利用すると複数端末間の通信が簡単に実現できます。...【Java】ローカル変数の型推論Java10でローカル変数にも型推論を利用することができるようになりました。本稿は、セーブデータをキー、値ペアとして保存する方法を紹介します。コメントをキャンセルメールアドレスが公開されることはありません。当サイトのプライバシーポリシーについてはこちらからご参照いただけます。