質問
進む前に、自分自身を再描画するためにJavaFXのアプリを強制する方法はありますか?スイングパネルのペイント(グラフィックg)の方法と同様に(私が間違ってキーワードを取得される可能性があります)。
次の例を考えてみましょう:あなたはコンピュータプレーヤーのために必要なAIと一緒に三目並べアプリケーションを記述します。次の2台のコンピュータプレイヤーの公爵それを表示する機能をしたいと思います。たぶん、あなたは、コンピュータの間の2つの第2のポーズに入れ、それを生きているような影響を与えることになります。あなたは「GO」ボタンを押すと、不応答して、突然アプリのビジュアルが完成で更新されます(9「決定」にコンピュータのために偽造ポーズをすることによって行くことになりますのにかかる時間)の大規模な一時停止がありますゲームの状態。
アプリケーションのスレッドの処理が終了するとJavaFXのは、再描画のように思え?私はここで完全にはよく分からない。
ありがとうございます。
解決
あなたは正しいです。 JavaFXのは、イベント駆動型およびシングルスレッドです。これは、再描画とイベント応答を同時に行うことができないことを意味します。彼らは、タスクが、それは単にメイン上でコードを実行しますFX.deferAction()を呼び出すことによって、バックFXスレッドに同期することができます終了したUIのレンダリングをブロックしない限り、実行中のタスクは、別のスレッドで実行する必要があります糸ます。
他のヒント
これは、私は半日のすべてのためのJavaFXの周りおもちゃにしているとして最も有用な答えではありませんが、あなたはタイムライン、キーフレームを使用して、あなたが持っているように、あなたの再描画を達成するために結合の代わりに、明示的に呼び出していないだろう説明?
たとえばのこのチュートリアルを参照してください。
のJavaFXのモデルは、画面上の「もの」の絵からあなたを分離することです。これは非常に強力ですが、あなたが精通してかもしれない方法から変更されます。
Whaleyらによって行われまはJavaFXの中でこれを行うのに適切な方法は、移動がX秒ごとに行われ、そのキーフレームで描画されますタイムラインを作ることであるということが正しいです。
あなたがこれを行う方法について質問がある場合は、それを試してみて、いくつかのコードで新しい質問を作成します。