2016-05-10 5 views
0

Ich arbeite mit Canvas - und auf der GraphicsContext der Leinwand aus mehreren einfachen Fadenzeichnung funktioniert nicht so glatt ...Wie trennt man AnimationTimer vom JavaFX-Anwendungs-Thread?

Die einzige normale Art und Weise mit AnimationTimers arbeiten - aber sie arbeiten nicht als separate Fäden. Wenn ich den Animationstimer wait() aufrufen, stoppt es die gesamte Anwendung.

Es gibt eine Möglichkeit, die AnimationTimers vom Hauptthread der Anwendung zu trennen? So wird es als unabhängiger Thread laufen und warten, ohne die gesamte Anwendung zu stoppen?

Antwort

1

Es gibt eine Möglichkeit, die AnimationTimers vom Hauptthread der Anwendung zu trennen? So wird es als unabhängiger Thread laufen und warten, ohne die gesamte Anwendung zu stoppen?

Nein, Sie können keinen Animationstimer für einen eigenen Thread ausführen. Animations-Timer bieten Callback-Handler, die auf jedem pulse des JavaFX-Systems im JavaFX-Anwendungsthread aufgerufen werden.

Wenn ich wait() im Animationstimer anrufe, stoppt es die gesamte Anwendung.

Tu das nicht ...

auf dem Graphics der Leinwand von multipe einfachen Fadenzeichnung glatt nicht funktioniert so ...

Sie sollten nicht Rufen Sie einen Grafikkontext aus mehreren Threads auf. Der Grafikkontext ist kein Multi-Threaded-Konstrukt. Seine API wurde so erstellt, dass sie nur vom JavaFX-Anwendungsthread aufgerufen wird, sobald die Arbeitsfläche an eine Live-Szene angehängt ist.

Verwandte Themen