7

続行する前に JavaFX アプリを強制的に再描画する方法はありますか? Swing Panel の paint(Graphic g) メソッドに似ています (キーワードが間違っている可能性があります)。

次の例を考えてみましょう: コンピューター プレーヤーに必要な AI と共に TicTacToe アプリを作成します。2 人のコンピューター プレーヤーが対決する様子を見せる機能が必要です。コンピュータの回転の間に 2 秒間の休止を入れて、生き生きとした効果を与えることもできます。「Go」ボタンを押すと、無反応の大きな一時停止 (コンピューターが「決定」するための偽の一時停止で 9 ターンが経過するのにかかる時間) があり、突然、アプリのビジュアルが完了した状態で更新されます。ゲームの状態。

アプリのスレッドでの処理が終了すると、JavaFX が再描画されるように見えますか? ここでは完全にはわかりません。

ありがとう!

4

3 に答える 3

6

あなたが正しいです。JavaFX はイベント駆動型でシングルスレッドです。これは、再描画とイベント応答を同時に行うことができないことを意味します。長時間実行されるタスクは、UI のレンダリングをブロックしないように別のスレッドで実行する必要があります。タスクが終了すると、FX.deferAction() を呼び出して FX スレッドに同期し、メインでコードを実行するだけです。スレッド。

于 2009-02-09T15:25:40.067 に答える
1

私は半日 JavaFX をいじったので、これは最も役立つ答えではありませんが、タイムライン、キーフレーム、バインディングを使用して、明示的に呼び出すのではなく、再描画を実行しませんか?

例については、このチュートリアルを参照してください。

于 2009-02-09T22:40:35.280 に答える
1

JavaFX のモデルは、画面上の「もの」の描画からユーザーを分離することです。これは非常に強力ですが、慣れ親しんだ方法とは異なります。

JavaFX でこれを行う適切な方法は、移動が X 秒ごとに行われ、そのキーフレームで描画されるタイムラインを作成することです。

これを行う方法について質問がある場合は、試してみて、いくつかのコードで新しい質問を作成してください。

于 2009-03-10T22:33:35.160 に答える