2016-05-09 14 views
0

私はゲームを作成しており、JavaFxを使用することを考えています。私がやりたいことはメインクラスの呼び出しからGUIクラス(javafxのすべてのスタート、シーンなどを含む)で繰り返しレンダリングメソッドを呼び出すことです。同時にメインでゲームロジック(collisiondetectionなど)を処理します-クラス。問題は、私はエラーの束を得ていると彼らはGUIクラスがアプリケーションの中心にしたいように思える。だから私の考えは間違っていますか?個別のJavaFX GUIとロジック

+1

あなたのアプローチは後ろ向きです。 GUIはアプリケーションの中心です。 JavaFXについて何も知らないGUIモデルを作成します。 JavaFX GUIでモデルを読んでGUIコンポーネントを作成し、GUIコントローラでモデルを更新します。モデルはGUIについて何も知らない。 GUIはモデルについて知っていなければなりません。そうすれば、同じモデルを異なるGUIで使用することができます。 –

答えて

0

JavaFXのメインスレッドは、GUI機能を実行する「アプリケーションスレッド」であり、これを回避するものではありません。

"GUIクラス"にはstartmainのメソッドをJavaFXが必要とするように作成し、GUIオブジェクトを作成した後、アプリケーションロジックのエントリポイントを開始する新しいスレッドを開始してください。何らかの理由で、アプリケーションの起動時にGUIを表示したくない場合でも、他のビジネスロジックを実行した後でprimaryStage.show()を実行するメソッドを呼び出すことができます。

アプリケーションロジックがGUIのレンダリングメソッドを頻繁に呼び出すようにして、さらに別のスレッドを作成したり、タイマーを使用したりすることもできます。私はこれがパラダイムだとは思わない。いずれにしても、GUIを変更するにはPlatform.runLater()を使用する必要があります。そうしないと、GUIが終了します。

+0

申し訳ありません。私がこれをやりたい理由はカプセル化で、いつでもフレームワークを変更する必要がありますが、javafxでは動作しません。 – codingIsFun

+0

それはどういう意味ですか?どのようにしてフレームワークを使用できなくなるのでしょうか?どのようにしてカプセル化が削除されますか? – Zircon

+0

すべてがjavafx "アプリケーション"をベースにしており、ゲームロジックではないからです。 – codingIsFun

関連する問題