2016-05-20 1 views
0

Ich bin neu in JavaFX und stieß auf ein Problem mit der rotierenden Animation beim Versuch, ein Rubik's Cube-Lösungsprogramm zu schreiben. Ich weiß, JavaFX bietet einige Klassen für die Animation, aber anstatt sie zu verwenden, wollte ich zunächst meinen eigenen Ansatz ausprobieren.
Es folgt die grobe Vorstellung von meinem Code:Javafx: setRotate und setTranslate in einer for-Schleife

for(90 times) 
{ 

cube.setRotate(cube.getRotate() + 1); 

try{Thread.sleep(100);} 
    catch{InterruptedException e) {Thread.currentThread().interrupt();} 

} 

die Würfel nur ein Grad zu einem Zeitpunkt und mit Zeitverzögerung und Schleife in geeigneter Weise durch Drehen
ich erwartet hatte etwas Ähnliches zu rotierenden Animation zu sehen. Aber das Ergebnis, das ich bekomme, ist, dass der Würfel auf dem Bildschirm nicht mit jedem setRotate() in der for-Schleife ändert, ändert es nur, nachdem die Schleife vorbei ist und daher ändert sich 90 Grad auf einmal nach 90 * 100 Millisekunden.
Ich frage mich, ob es eine Methode gibt, die die Ausgabe auf dem Bildschirm jedes Mal mit der Methode setRotate() aktualisieren kann.

+0

Mögliches Duplikat von [JavaFX-Programm sperrt/friert beim Ausführen] (http://stackoverflow.com/questions/28941347/javafx-program-locks-freezes-whilst-running) – fabian

Antwort

1

Warum möchten Sie die Mechanismen vermeiden, die entworfen wurden, um Animationen zu machen. Glaubst du nicht, dass es einen Grund gibt, dass sie existieren?

Mit Ihrem Code blockieren Sie den JavaFX-Anwendungsthread und das resultierende Verhalten wird in allen Dokumenten beschrieben, die sich mit diesem Problem befassen.