2016-05-31 13 views
-2

nur eine Frage ... ist es möglich, die Änderung der Breite eines Rechtecks ​​als Animation zu zeigen? Das Rechteck selbst ist eine Statusleiste, so dass eine Skalierung in beiden x-Richtungen die Aufgabe nicht erfüllt.JavaFX Rechteck Breite Animation

thx

Antwort

0

Eine Methode wäre die Breite Modifikation animieren innerhalb eines Timeline wie in beide Richtungen zu Skalierung gegenüber.

  • Pos.CENTER:: scheint, als ob die Veränderung in beiden Richtungen auftritt, wird
  • Pos.CENTER_LEFT: Sie können durch Modifizieren der Ausrichtung des Rectangle ‚Mutter

    Ausrichtungswerte die Richtung simulieren scheint, als ob die Änderung von der rechten vorkommenden

  • Pos.CENTER_RIGHT: Erscheint als ob der Wechsel von der linken
auftretende

Durch die Zusammenarbeit mit Ausrichtungen experimentieren Sie wählen können, die am besten zu Ihrer aktuellen Statusleiste passen


Visuelle Darstellung:

Reihenfolge der Ausrichtung: Right | Center | Left

right center left


SSCCE:

public class RectangleWidthAnimation extends Application{ 
    @Override 
    public void start(Stage primaryStage) throws Exception { 
     Rectangle statusBar = new Rectangle(300, 100); 
     Button animationButton = new Button("Animate width decrease by 25"); 
     animationButton.setOnAction(event -> { 
      System.out.println("Animation start: width = " + statusBar.getWidth()); 
      KeyValue widthValue = new KeyValue(statusBar.widthProperty(), statusBar.getWidth() - 25); 
      KeyFrame frame = new KeyFrame(Duration.seconds(2), widthValue); 
      Timeline timeline = new Timeline(frame); 
      timeline.play(); 
      timeline.setOnFinished(finishedEvent -> System.out.println("Animation end: width = " + statusBar.getWidth())); 
     }); 

     VBox container = new VBox(10, statusBar, animationButton); 

     //Experiment with these alignments 
     container.setAlignment(Pos.CENTER); 
     //container.setAlignment(Pos.CENTER_LEFT); 
     //container.setAlignment(Pos.CENTER_RIGHT); 

     primaryStage.setScene(new Scene(container, 350, 150)); 
     primaryStage.show(); 
    } 
} 


Eine Alternative zu der oben könnte sein, Übergänge zu verwenden, die Sie über here

lesen
Verwandte Themen