import javafx.animation.Animation; import javafx.animation.FadeTransition; import javafx.animation.FillTransition; import javafx.animation.Interpolator; import javafx.animation.ParallelTransition; import javafx.animation.PathTransition; import javafx.animation.PathTransition.OrientationType; import javafx.animation.PauseTransition; import javafx.animation.RotateTransition; import javafx.animation.ScaleTransition; import javafx.animation.SequentialTransition; import javafx.animation.StrokeTransition; import javafx.animation.Transition; import javafx.animation.TranslateTransition; import javafx.application.Application; import javafx.collections.ObservableMap; import javafx.geometry.Pos; import javafx.scene.Cursor; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ScrollPane; import javafx.scene.input.MouseEvent; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.shape.HLineTo; import javafx.scene.shape.LineTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.scene.shape.QuadCurveTo; import javafx.scene.shape.Rectangle; import javafx.scene.shape.VLineTo; import javafx.scene.text.Text; import javafx.scene.transform.Rotate; import javafx.scene.transform.Translate; import javafx.stage.Stage; import javafx.util.Duration; public class Animate extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage stage) throws Exception { VBox root = new VBox(10); root.setAlignment(Pos.CENTER); Button button1 = new Button("Класс Animation"); Button button2 = new Button("Класс Transition"); Button button3 = new Button("Изменение прозрачности"); Button button4 = new Button("Изменение местоположения"); Button button5 = new Button("Движение вдоль траектории"); Button button6 = new Button("Изменение масштаба"); Button button7 = new Button("Вращение"); Button button8 = new Button("Изменение цвета заливки"); Button button9 = new Button("Изменение цвета обводки"); Button button10 = new Button("Параллельное выполнение"); Button button11 = new Button("Последовательное выполнение"); Button button12 = new Button("Пауза во время выполнения"); root.getChildren().addAll(button1, button2, button3, button4, button5, button6, button7, button8, button9, button10, button11, button12); Scene scene = new Scene(root, 400, 500); button1.setOnAction(event -> { newWindow(); }); button2.setOnAction(event -> { newWindow2(); }); button3.setOnAction(event -> { newWindow3(); }); button4.setOnAction(event -> { newWindow4(); }); button5.setOnAction(event -> { newWindow5(); }); button6.setOnAction(event -> { newWindow6(); }); button7.setOnAction(event -> { newWindow7(); }); button8.setOnAction(event -> { newWindow8(); }); button9.setOnAction(event -> { newWindow9(); }); button10.setOnAction(event -> { newWindow10(); }); button11.setOnAction(event -> { newWindow11(); }); button12.setOnAction(event -> { newWindow12(); }); stage.setTitle("Animation"); stage.setScene(scene); stage.show(); } public void newWindow() { Stage window = new Stage(); Pane pane = new Pane(); Rectangle rect = new Rectangle(100.0, 100.0); rect.setFill(Color.RED); rect.setOpacity(0.5); rect.setScaleX(0.8); rect.setScaleY(0.8); rect.relocate(50.0, 50.0); rect.setOnMouseEntered(event -> { rect.setOpacity(1.0); rect.setScaleX(1.0); rect.setScaleY(1.0); rect.setCursor(Cursor.HAND); }); rect.setOnMouseExited(event -> { rect.setOpacity(0.5); rect.setScaleX(0.8); rect.setScaleY(0.8); rect.setCursor(Cursor.DEFAULT); }); Rectangle rect2 = new Rectangle(100.0, 100.0); rect2.setFill(Color.RED); rect2.setOpacity(0.5); rect2.setScaleX(0.8); rect2.setScaleY(0.8); rect2.relocate(200.0, 50.0); /*Duration d1 = new Duration(500.0); System.out.println(d1); // 500.0 ms Duration d2 = Duration.millis(500.0); System.out.println(d2); // 500.0 ms Duration d3 = Duration.seconds(1.0); System.out.println(d3); // 1000.0 ms Duration d4 = Duration.minutes(1.0); System.out.println(d4); // 60000.0 ms Duration d5 = Duration.hours(1.0); System.out.println(d5); // 3600000.0 ms System.out.println(Duration.valueOf("500ms")); // 500.0 ms System.out.println(Duration.ZERO); // 0.0 ms System.out.println(Duration.ONE); // 1.0 ms System.out.println(Duration.INDEFINITE); // INDEFINITE System.out.println(Duration.UNKNOWN); // UNKNOWN Duration d = new Duration(500.0); System.out.println(d.toMillis()); // 500.0 System.out.println(d.toSeconds()); // 0.5 System.out.println(d.toMinutes()); // 0.008333333333333333 System.out.println(d.toHours()); // 1.388888888888889E-4 System.out.println(d.toString()); // 500.0 ms d = new Duration(500.0).add(Duration.millis(100.0)); System.out.println(d.toMillis()); // 600.0 d = new Duration(500.0).subtract(Duration.millis(100.0)); System.out.println(d.toMillis()); // 400.0 d = new Duration(500.0).divide(5.0); System.out.println(d.toMillis()); // 100.0 d = new Duration(500.0).multiply(2.0); System.out.println(d.toMillis()); // 1000.0 d = new Duration(500.0).negate(); System.out.println(d.toMillis()); // -500.0 d = new Duration(-500.0).negate(); System.out.println(d.toMillis()); // 500.0 System.out.println(d.lessThan(Duration.millis(400))); // false System.out.println(d.lessThanOrEqualTo(Duration.millis(500))); // true System.out.println(d.greaterThan(Duration.millis(400))); // true System.out.println(d.greaterThanOrEqualTo(Duration.millis(500))); // true System.out.println(d.compareTo(Duration.millis(400))); // 1 System.out.println(d.compareTo(Duration.millis(500))); // 0 System.out.println(d.compareTo(Duration.millis(600))); // -1 System.out.println(d.equals(Duration.millis(500))); // true System.out.println(d.equals(Duration.millis(300))); // false d = Duration.INDEFINITE; System.out.println(d.toMillis()); // Infinity System.out.println(d.toSeconds()); // Infinity System.out.println(d.toMinutes()); // Infinity System.out.println(d.toHours()); // Infinity System.out.println(d.toString()); // INDEFINITE System.out.println(d.isIndefinite()); // true System.out.println(d.isUnknown()); // false d = Duration.UNKNOWN; System.out.println(d.toMillis()); // NaN System.out.println(d.toSeconds()); // NaN System.out.println(d.toMinutes()); // NaN System.out.println(d.toHours()); // NaN System.out.println(d.toString()); // UNKNOWN System.out.println(d.isIndefinite()); // false System.out.println(d.isUnknown()); // true */ FadeTransition ft = new FadeTransition(Duration.millis(500.0)); ScaleTransition st = new ScaleTransition(Duration.millis(500.0)); ParallelTransition pt = new ParallelTransition(rect2, ft, st); rect2.setOnMouseEntered(event -> { rect2.setCursor(Cursor.HAND); pt.stop(); ft.setFromValue(rect2.getOpacity()); ft.setToValue(1.0); st.setFromX(rect2.getScaleX()); st.setFromY(rect2.getScaleY()); st.setToX(1.0); st.setToY(1.0); pt.play(); }); rect2.setOnMouseExited(event -> { rect2.setCursor(Cursor.DEFAULT); pt.stop(); ft.setFromValue(rect2.getOpacity()); ft.setToValue(0.5); st.setFromX(rect2.getScaleX()); st.setFromY(rect2.getScaleY()); st.setToX(0.8); st.setToY(0.8); pt.play(); }); pt.setOnFinished(event -> { System.out.println("Анимация завершена"); }); Text text1 = new Text("Без анимации"); text1.relocate(60.0, 20.0); Text text2 = new Text("С анимацией"); text2.relocate(210.0, 20.0); Rectangle rect3 = new Rectangle(100.0, 100.0); rect3.setFill(Color.RED); rect3.relocate(350.0, 50.0); FadeTransition ft2 = new FadeTransition( Duration.seconds(1.0), rect3); ft2.setDelay(Duration.seconds(1.0)); ft2.setAutoReverse(true); ft2.setFromValue(1.0); ft2.setToValue(0.0); ft2.setCycleCount(6); ft2.setRate(1.0); ft2.setOnFinished(event -> { System.out.println("Анимация завершена"); }); ft2.play(); System.out.println(ft2.getTargetFramerate()); // 60.0 ObservableMap map = ft2.getCuePoints(); ft2.getCuePoints().put("p1", Duration.millis(100.0)); for (String s: map.keySet()) { System.out.println(s + " : " + map.get(s)); } /*System.out.println(Animation.INDEFINITE); // -1 System.out.println(ft2.getDelay()); System.out.println(ft2.getCurrentRate()); System.out.println(ft2.getCycleCount()); System.out.println(ft2.getCurrentTime()); System.out.println(ft2.getRate()); System.out.println(ft2.isAutoReverse()); System.out.println(ft2.getCycleDuration()); System.out.println(ft2.getOnFinished()); System.out.println(ft2.getStatus()); System.out.println(ft2.getTotalDuration());*/ rect3.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> { if (ft2.getStatus() == Animation.Status.RUNNING) { ft2.pause(); } else { //ft2.playFromStart(); //ft2.playFrom("p1"); //ft2.playFrom(Duration.millis(100.0)); //ft2.jumpTo("p1"); //ft2.jumpTo(Duration.millis(100.0)); ft2.play(); } }); pane.getChildren().addAll(rect, rect2, text1, text2, rect3); Scene scene = new Scene(pane, 500, 200); window.setScene(scene); window.setTitle("Animation"); window.show(); } public void newWindow2() { Stage window = new Stage(); ScrollPane sp = new ScrollPane(); Pane pane = new Pane(); pane.setPrefWidth(500.0); sp.setContent(pane); Rectangle rect = new Rectangle(50.0, 50.0); rect.setFill(Color.RED); rect.relocate(50.0, 50.0); TranslateTransition tt = new TranslateTransition( Duration.seconds(5.0), rect); tt.setAutoReverse(true); tt.setFromX(0.0); tt.setToX(450.0); tt.setCycleCount(Animation.INDEFINITE); tt.setInterpolator(Interpolator.EASE_BOTH); tt.play(); Rectangle rect2 = new Rectangle(50.0, 50.0); rect2.setFill(Color.DARKGREEN); rect2.relocate(50.0, 150.0); TranslateTransition tt2 = new TranslateTransition( Duration.seconds(5.0), rect2); tt2.setAutoReverse(true); tt2.setFromX(0.0); tt2.setToX(450.0); tt2.setCycleCount(Animation.INDEFINITE); tt2.setInterpolator(Interpolator.EASE_IN); tt2.play(); Rectangle rect3 = new Rectangle(50.0, 50.0); rect3.setFill(Color.BLUE); rect3.relocate(50.0, 250.0); TranslateTransition tt3 = new TranslateTransition( Duration.seconds(5.0), rect3); tt3.setAutoReverse(true); tt3.setFromX(0.0); tt3.setToX(450.0); tt3.setCycleCount(Animation.INDEFINITE); tt3.setInterpolator(Interpolator.EASE_OUT); tt3.play(); Rectangle rect4 = new Rectangle(50.0, 50.0); rect4.setFill(Color.CHOCOLATE); rect4.relocate(50.0, 350.0); TranslateTransition tt4 = new TranslateTransition( Duration.seconds(5.0), rect4); tt4.setAutoReverse(true); tt4.setFromX(0.0); tt4.setToX(450.0); tt4.setCycleCount(Animation.INDEFINITE); tt4.setInterpolator(Interpolator.LINEAR); tt4.play(); Rectangle rect5 = new Rectangle(50.0, 50.0); rect5.setFill(Color.BLACK); rect5.relocate(50.0, 450.0); TranslateTransition tt5 = new TranslateTransition( Duration.seconds(5.0), rect5); tt5.setFromX(0.0); tt5.setToX(450.0); tt5.setCycleCount(1); tt5.setInterpolator(Interpolator.DISCRETE); tt5.play(); Rectangle rect6 = new Rectangle(50.0, 50.0); rect6.setFill(Color.FUCHSIA); rect6.relocate(50.0, 550.0); TranslateTransition tt6 = new TranslateTransition( Duration.seconds(5.0), rect6); tt6.setAutoReverse(true); tt6.setFromX(0.0); tt6.setToX(450.0); tt6.setCycleCount(Animation.INDEFINITE); tt6.setInterpolator(Interpolator.SPLINE(1.0, 0.5, 0.5, 1.0)); tt6.play(); Rectangle rect7 = new Rectangle(50.0, 50.0); rect7.setFill(Color.MEDIUMPURPLE); rect7.relocate(50.0, 650.0); TranslateTransition tt7 = new TranslateTransition( Duration.seconds(5.0), rect7); tt7.setAutoReverse(true); tt7.setFromX(0.0); tt7.setToX(450.0); tt7.setCycleCount(Animation.INDEFINITE); Interpolator interpolator = new Interpolator() { @Override protected double curve(double t) { // IN //System.out.println(Math.pow(t, 2)); return Math.pow(t, 2); // OUT //return 1 - Math.pow(1 - t, 2); // BOTH /*if (t <= 0.5) return Math.pow(2 * t, 2) / 2; return (2 - Math.pow(2 * (1 - t), 2)) / 2;*/ } }; tt7.setInterpolator(interpolator); tt7.play(); String str = "Класс Transition"; Text text = new Text(""); text.relocate(300.0, 25.0); Animation animation = new Transition() { { setCycleDuration(Duration.millis(2000)); setAutoReverse(true); setCycleCount(Animation.INDEFINITE); setInterpolator(Interpolator.EASE_OUT); } protected void interpolate(double f) { int n = Math.round((float) (str.length() * f)); text.setText(str.substring(0, n)); } }; animation.play(); Text text1 = new Text("Interpolator.EASE_BOTH"); text1.relocate(50.0, 25.0); Text text2 = new Text("Interpolator.EASE_IN"); text2.relocate(50.0, 125.0); Text text3 = new Text("Interpolator.EASE_OUT"); text3.relocate(50.0, 225.0); Text text4 = new Text("Interpolator.LINEAR"); text4.relocate(50.0, 325.0); Text text5 = new Text("Interpolator.DISCRETE"); text5.relocate(50.0, 425.0); Text text6 = new Text("Interpolator.SPLINE(1.0, 0.5, 0.5, 1.0)"); text6.relocate(50.0, 525.0); Text text7 = new Text("curve(double t) { return Math.pow(t, 2); }"); text7.relocate(50.0, 625.0); pane.getChildren().addAll(rect, rect2, rect3, rect4, rect5, rect6, rect7, text1, text2, text3, text4, text5, text6, text7, text); Scene scene = new Scene(sp, 600, 500); window.setScene(scene); window.setTitle("Transition"); window.show(); window.setOnCloseRequest(event -> { if (tt != null) tt.stop(); if (tt2 != null) tt2.stop(); if (tt3 != null) tt3.stop(); if (tt4 != null) tt4.stop(); if (tt5 != null) tt5.stop(); if (tt6 != null) tt6.stop(); if (tt7 != null) tt7.stop(); if (animation != null) animation.stop(); }); } public void newWindow3() { Stage window = new Stage(); Pane pane = new Pane(); pane.setPrefWidth(500.0); Rectangle rect = new Rectangle(50.0, 50.0); rect.setFill(Color.RED); rect.relocate(50.0, 50.0); FadeTransition ft = new FadeTransition( Duration.seconds(5.0), rect); ft.setAutoReverse(true); ft.setFromValue(1.0); ft.setToValue(0.0); ft.setCycleCount(Animation.INDEFINITE); ft.setInterpolator(Interpolator.LINEAR); ft.play(); Rectangle rect2 = new Rectangle(50.0, 50.0); rect2.setFill(Color.DARKGREEN); rect2.relocate(150.0, 50.0); FadeTransition ft2 = new FadeTransition( Duration.seconds(5.0)); ft2.setNode(rect2); ft2.setAutoReverse(true); ft2.setFromValue(1.0); ft2.setToValue(0.0); ft2.setCycleCount(Animation.INDEFINITE); ft2.setInterpolator(Interpolator.EASE_IN); ft2.play(); Rectangle rect3 = new Rectangle(50.0, 50.0); rect3.setFill(Color.BLUE); rect3.relocate(250.0, 50.0); FadeTransition ft3 = new FadeTransition(); ft3.setDuration(Duration.seconds(5.0)); ft3.setNode(rect3); ft3.setAutoReverse(true); ft3.setFromValue(0.1); ft3.setByValue(0.9); ft3.setCycleCount(Animation.INDEFINITE); ft3.setInterpolator(Interpolator.EASE_OUT); ft3.play(); /*System.out.println(ft3.getDuration()); System.out.println(ft3.getNode()); System.out.println(ft3.getToValue()); System.out.println(ft3.getFromValue()); System.out.println(ft3.getByValue());*/ pane.getChildren().addAll(rect, rect2, rect3); Scene scene = new Scene(pane, 400, 200); window.setScene(scene); window.setTitle("FadeTransition"); window.show(); window.setOnCloseRequest(event -> { if (ft != null) ft.stop(); if (ft2 != null) ft2.stop(); if (ft3 != null) ft3.stop(); }); } public void newWindow4() { Stage window = new Stage(); Pane pane = new Pane(); pane.setPrefWidth(500.0); Rectangle rect = new Rectangle(50.0, 50.0); rect.setFill(Color.RED); rect.relocate(50.0, 50.0); TranslateTransition tr = new TranslateTransition( Duration.seconds(10.0), rect); tr.setAutoReverse(true); tr.setFromX(0.0); tr.setFromY(0.0); tr.setToX(400.0); tr.setToY(300.0); tr.setCycleCount(Animation.INDEFINITE); tr.setInterpolator(Interpolator.LINEAR); tr.play(); Rectangle rect2 = new Rectangle(50.0, 50.0); rect2.setFill(Color.DARKGREEN); rect2.relocate(50.0, 150.0); TranslateTransition tr2 = new TranslateTransition( Duration.seconds(5.0)); tr2.setNode(rect2); tr2.setAutoReverse(true); tr2.setFromX(0.0); tr2.setToX(400.0); tr2.setCycleCount(Animation.INDEFINITE); tr2.setInterpolator(Interpolator.EASE_IN); tr2.play(); Rectangle rect3 = new Rectangle(50.0, 50.0); rect3.setFill(Color.BLUE); rect3.relocate(50.0, 250.0); TranslateTransition tr3 = new TranslateTransition(); tr3.setDuration(Duration.seconds(5.0)); tr3.setNode(rect3); tr3.setAutoReverse(true); tr3.setFromX(0.0); tr3.setByX(400.0); /*tr3.setFromZ(0.0); tr3.setToZ(0.0); tr3.setByY(10.0); tr3.setByZ(10.0);*/ tr3.setCycleCount(Animation.INDEFINITE); tr3.setInterpolator(Interpolator.EASE_OUT); tr3.play(); /* System.out.println(tr3.getFromX()); System.out.println(tr3.getFromY()); System.out.println(tr3.getFromZ()); System.out.println(tr3.getToX()); System.out.println(tr3.getToY()); System.out.println(tr3.getToZ()); System.out.println(tr3.getByX()); System.out.println(tr3.getByY()); System.out.println(tr3.getByZ()); System.out.println(tr3.getDuration()); System.out.println(tr3.getNode()); */ pane.getChildren().addAll(rect, rect2, rect3); Scene scene = new Scene(pane, 500, 400); window.setScene(scene); window.setTitle("TranslateTransition"); window.show(); window.setOnCloseRequest(event -> { if (tr != null) tr.stop(); if (tr2 != null) tr2.stop(); if (tr3 != null) tr3.stop(); }); } public void newWindow5() { Stage window = new Stage(); Pane pane = new Pane(); pane.setPrefWidth(500.0); Rectangle rect = new Rectangle(50.0, 50.0); rect.setFill(Color.RED); rect.relocate(50.0, 50.0); Path p1 = new Path( new MoveTo(0.0, 0.0), new HLineTo(400.0), new VLineTo(300.0), new HLineTo(0.0), new VLineTo(0.0) ); PathTransition tr = new PathTransition( Duration.seconds(10.0), p1, rect); tr.setCycleCount(Animation.INDEFINITE); tr.setInterpolator(Interpolator.LINEAR); tr.play(); Rectangle rect2 = new Rectangle(50.0, 50.0); rect2.setFill(Color.DARKGREEN); rect2.relocate(50.0, 150.0); Path p2 = new Path( new MoveTo(0.0, 0.0), new LineTo(400.0, -80.0) ); PathTransition tr2 = new PathTransition( Duration.seconds(5.0), p2); tr2.setNode(rect2); tr2.setAutoReverse(true); tr2.setCycleCount(Animation.INDEFINITE); tr2.setInterpolator(Interpolator.EASE_IN); tr2.play(); Rectangle rect3 = new Rectangle(50.0, 50.0); rect3.setFill(Color.BLUE); rect3.relocate(50.0, 150.0); Path p3 = new Path( new MoveTo(0.0, 0.0), new QuadCurveTo(200.0, 200.0, 400.0, 0.0) ); PathTransition tr3 = new PathTransition(); tr3.setDuration(Duration.seconds(5.0)); tr3.setNode(rect3); tr3.setPath(p3); tr3.setOrientation(OrientationType.ORTHOGONAL_TO_TANGENT); tr3.setAutoReverse(true); tr3.setCycleCount(Animation.INDEFINITE); tr3.setInterpolator(Interpolator.EASE_BOTH); tr3.play(); /*System.out.println(tr3.getPath()); System.out.println(tr3.getOrientation()); System.out.println(tr3.getDuration()); System.out.println(tr3.getNode()); */ /*Path p1_1 = new Path( new MoveTo(50.0, 50.0), new HLineTo(450.0), new VLineTo(350.0), new HLineTo(50.0), new VLineTo(50.0) ); Path p2_1 = new Path( new MoveTo(50.0, 150.0), new LineTo(450.0, 70.0) ); Path p3_1 = new Path( new MoveTo(50.0, 150.0), new QuadCurveTo(250.0, 350.0, 450.0, 150.0) ); pane.getChildren().addAll(p1_1, p2_1, p3_1);*/ pane.getChildren().addAll(rect, rect2, rect3); Scene scene = new Scene(pane, 500, 400); window.setScene(scene); window.setTitle("PathTransition"); window.show(); window.setOnCloseRequest(event -> { if (tr != null) tr.stop(); if (tr2 != null) tr2.stop(); if (tr3 != null) tr3.stop(); }); } public void newWindow6() { Stage window = new Stage(); Pane pane = new Pane(); pane.setPrefWidth(500.0); Rectangle rect = new Rectangle(50.0, 50.0); rect.setFill(Color.RED); rect.relocate(50.0, 50.0); ScaleTransition tr = new ScaleTransition( Duration.seconds(5.0), rect); tr.setAutoReverse(true); tr.setFromX(1.0); tr.setFromY(1.0); tr.setToX(2.0); tr.setToY(3.0); tr.setCycleCount(Animation.INDEFINITE); tr.setInterpolator(Interpolator.LINEAR); tr.play(); Rectangle rect2 = new Rectangle(50.0, 50.0); rect2.setFill(Color.DARKGREEN); rect2.relocate(200.0, 50.0); ScaleTransition tr2 = new ScaleTransition( Duration.seconds(5.0)); tr2.setNode(rect2); tr2.setAutoReverse(true); tr2.setFromX(1.0); tr2.setToX(2.0); tr2.setCycleCount(Animation.INDEFINITE); tr2.setInterpolator(Interpolator.EASE_IN); tr2.play(); Rectangle rect3 = new Rectangle(50.0, 50.0); rect3.setFill(Color.BLUE); rect3.relocate(350.0, 50.0); ScaleTransition tr3 = new ScaleTransition(); tr3.setDuration(Duration.seconds(5.0)); tr3.setNode(rect3); tr3.setAutoReverse(true); tr3.setFromX(1.0); tr3.setFromY(1.0); tr3.setByX(1.5); tr3.setByY(1.5); tr3.setCycleCount(Animation.INDEFINITE); tr3.setInterpolator(Interpolator.EASE_OUT); tr3.play(); /*System.out.println(tr3.getFromX()); System.out.println(tr3.getFromY()); System.out.println(tr3.getFromZ()); System.out.println(tr3.getToX()); System.out.println(tr3.getToY()); System.out.println(tr3.getToZ()); System.out.println(tr3.getByX()); System.out.println(tr3.getByY()); System.out.println(tr3.getByZ()); System.out.println(tr3.getDuration()); System.out.println(tr3.getNode());*/ pane.getChildren().addAll(rect, rect2, rect3); Scene scene = new Scene(pane, 500, 200); window.setScene(scene); window.setTitle("ScaleTransition"); window.show(); window.setOnCloseRequest(event -> { if (tr != null) tr.stop(); if (tr2 != null) tr2.stop(); if (tr3 != null) tr3.stop(); }); } public void newWindow7() { Stage window = new Stage(); Pane pane = new Pane(); pane.setPrefWidth(500.0); Rectangle rect = new Rectangle(50.0, 50.0); rect.setFill(Color.RED); rect.relocate(50.0, 50.0); RotateTransition tr = new RotateTransition( Duration.seconds(5.0), rect); tr.setAutoReverse(true); tr.setAxis(Rotate.Y_AXIS); tr.setFromAngle(0.0); tr.setToAngle(180.0); tr.setCycleCount(Animation.INDEFINITE); tr.setInterpolator(Interpolator.LINEAR); tr.play(); Rectangle rect2 = new Rectangle(50.0, 50.0); rect2.setFill(Color.DARKGREEN); rect2.relocate(200.0, 50.0); RotateTransition tr2 = new RotateTransition( Duration.seconds(5.0)); tr2.setNode(rect2); tr2.setFromAngle(0.0); tr2.setToAngle(360.0); tr2.setCycleCount(Animation.INDEFINITE); tr2.setInterpolator(Interpolator.LINEAR); tr2.play(); Rectangle rect3 = new Rectangle(50.0, 50.0); rect3.setFill(Color.BLUE); rect3.relocate(350.0, 50.0); rect3.getTransforms().add(new Translate(-25.0, -25.0)); rect3.setTranslateX(25.0); rect3.setTranslateY(25.0); RotateTransition tr3 = new RotateTransition(); tr3.setDuration(Duration.seconds(5.0)); tr3.setNode(rect3); tr3.setByAngle(360.0); tr3.setCycleCount(Animation.INDEFINITE); tr3.setInterpolator(Interpolator.LINEAR); tr3.play(); /*System.out.println(tr.getAxis()); System.out.println(tr3.getFromAngle()); System.out.println(tr3.getToAngle()); System.out.println(tr3.getByAngle()); System.out.println(tr3.getDuration()); System.out.println(tr3.getNode());*/ pane.getChildren().addAll(rect, rect2, rect3); Scene scene = new Scene(pane, 500, 200); window.setScene(scene); window.setTitle("RotateTransition"); window.show(); window.setOnCloseRequest(event -> { if (tr != null) tr.stop(); if (tr2 != null) tr2.stop(); if (tr3 != null) tr3.stop(); }); } public void newWindow8() { Stage window = new Stage(); Pane pane = new Pane(); pane.setPrefWidth(500.0); Rectangle rect = new Rectangle(50.0, 50.0); rect.setFill(Color.RED); rect.relocate(50.0, 50.0); FillTransition tr = new FillTransition( Duration.seconds(5.0), rect); /*FillTransition tr = new FillTransition( Duration.seconds(5.0), rect, Color.RED, Color.BLUE);*/ tr.setAutoReverse(true); tr.setFromValue(Color.RED); tr.setToValue(Color.BLUE); tr.setCycleCount(Animation.INDEFINITE); tr.play(); Rectangle rect2 = new Rectangle(50.0, 50.0); rect2.setFill(Color.DARKGREEN); rect2.relocate(200.0, 50.0); FillTransition tr2 = new FillTransition( Duration.seconds(5.0)); /*FillTransition tr2 = new FillTransition( Duration.seconds(5.0), Color.RED, Color.BLUE);*/ tr2.setShape(rect2); tr2.setAutoReverse(true); tr2.setFromValue(Color.DARKGREEN); tr2.setToValue(Color.GOLD); tr2.setCycleCount(Animation.INDEFINITE); tr2.play(); Rectangle rect3 = new Rectangle(50.0, 50.0); rect3.setFill(Color.BLACK); rect3.relocate(350.0, 50.0); FillTransition tr3 = new FillTransition(); tr3.setDuration(Duration.seconds(5.0)); tr3.setShape(rect3); tr3.setAutoReverse(true); tr3.setFromValue(Color.BLACK); tr3.setToValue(Color.WHITE); tr3.setCycleCount(Animation.INDEFINITE); tr3.play(); /*System.out.println(tr3.getFromValue()); System.out.println(tr3.getToValue()); System.out.println(tr3.getDuration()); System.out.println(tr3.getShape()); */ pane.getChildren().addAll(rect, rect2, rect3); Scene scene = new Scene(pane, 500, 200); window.setScene(scene); window.setTitle("FillTransition"); window.show(); window.setOnCloseRequest(event -> { if (tr != null) tr.stop(); if (tr2 != null) tr2.stop(); if (tr3 != null) tr3.stop(); }); } public void newWindow9() { Stage window = new Stage(); Pane pane = new Pane(); pane.setPrefWidth(500.0); Rectangle rect = new Rectangle(100.0, 100.0); rect.setFill(Color.WHITE); rect.setStroke(Color.RED); rect.setStrokeWidth(5.0); rect.relocate(50.0, 50.0); StrokeTransition tr = new StrokeTransition( Duration.seconds(5.0), rect); /*StrokeTransition tr = new StrokeTransition( Duration.seconds(5.0), rect, Color.RED, Color.BLUE);*/ tr.setAutoReverse(true); tr.setFromValue(Color.RED); tr.setToValue(Color.BLUE); tr.setCycleCount(Animation.INDEFINITE); tr.play(); Rectangle rect2 = new Rectangle(100.0, 100.0); rect2.setFill(Color.WHITE); rect2.setStroke(Color.DARKGREEN); rect2.setStrokeWidth(5.0); rect2.relocate(200.0, 50.0); StrokeTransition tr2 = new StrokeTransition( Duration.seconds(5.0)); /*StrokeTransition tr2 = new StrokeTransition( Duration.seconds(5.0), Color.RED, Color.BLUE);*/ tr2.setShape(rect2); tr2.setAutoReverse(true); tr2.setFromValue(Color.DARKGREEN); tr2.setToValue(Color.GOLD); tr2.setCycleCount(Animation.INDEFINITE); tr2.play(); Rectangle rect3 = new Rectangle(100.0, 100.0); rect3.setFill(Color.CHOCOLATE); rect3.setStroke(Color.BLACK); rect3.setStrokeWidth(5.0); rect3.relocate(350.0, 50.0); StrokeTransition tr3 = new StrokeTransition(); tr3.setDuration(Duration.seconds(5.0)); tr3.setShape(rect3); tr3.setAutoReverse(true); tr3.setFromValue(Color.BLACK); tr3.setToValue(Color.WHITE); tr3.setCycleCount(Animation.INDEFINITE); tr3.play(); /*System.out.println(tr3.getFromValue()); System.out.println(tr3.getToValue()); System.out.println(tr3.getDuration()); System.out.println(tr3.getShape());*/ pane.getChildren().addAll(rect, rect2, rect3); Scene scene = new Scene(pane, 500, 200); window.setScene(scene); window.setTitle("StrokeTransition"); window.show(); window.setOnCloseRequest(event -> { if (tr != null) tr.stop(); if (tr2 != null) tr2.stop(); if (tr3 != null) tr3.stop(); }); } public void newWindow10() { Stage window = new Stage(); Pane pane = new Pane(); pane.setPrefWidth(500.0); FadeTransition ft = new FadeTransition(Duration.seconds(2.5)); ft.setAutoReverse(true); ft.setFromValue(0.3); ft.setToValue(1.0); ft.setCycleCount(Animation.INDEFINITE); ft.setInterpolator(Interpolator.LINEAR); TranslateTransition tt = new TranslateTransition( Duration.seconds(5.0)); tt.setAutoReverse(true); tt.setFromX(0.0); tt.setToX(400.0); tt.setCycleCount(Animation.INDEFINITE); tt.setInterpolator(Interpolator.EASE_BOTH); Rectangle rect = new Rectangle(50.0, 50.0); rect.setFill(Color.RED); rect.relocate(50.0, 50.0); //ParallelTransition pt = new ParallelTransition(rect, ft, tt); ParallelTransition pt = new ParallelTransition(rect); pt.getChildren().addAll(ft, tt); pt.play(); RotateTransition rt2 = new RotateTransition( Duration.seconds(5.0)); rt2.setAutoReverse(true); rt2.setFromAngle(0.0); rt2.setToAngle(360.0); rt2.setCycleCount(Animation.INDEFINITE); rt2.setInterpolator(Interpolator.LINEAR); TranslateTransition tt2 = new TranslateTransition( Duration.seconds(5.0)); tt2.setAutoReverse(true); tt2.setFromX(0.0); tt2.setToX(400.0); tt2.setCycleCount(Animation.INDEFINITE); tt2.setInterpolator(Interpolator.EASE_BOTH); Rectangle rect2 = new Rectangle(50.0, 50.0); rect2.setFill(Color.DARKGREEN); rect2.relocate(50.0, 150.0); ParallelTransition pt2 = new ParallelTransition(rt2, tt2); pt2.setNode(rect2); pt2.play(); ScaleTransition st3 = new ScaleTransition( Duration.seconds(2.5)); st3.setAutoReverse(true); st3.setFromX(1.0); st3.setFromY(1.0); st3.setToX(2.0); st3.setToY(2.0); st3.setCycleCount(Animation.INDEFINITE); st3.setInterpolator(Interpolator.LINEAR); TranslateTransition tt3 = new TranslateTransition( Duration.seconds(5.0)); tt3.setAutoReverse(true); tt3.setFromX(0.0); tt3.setToX(400.0); tt3.setCycleCount(Animation.INDEFINITE); tt3.setInterpolator(Interpolator.EASE_BOTH); Rectangle rect3 = new Rectangle(50.0, 50.0); rect3.setFill(Color.BLUE); rect3.relocate(50.0, 250.0); ParallelTransition pt3 = new ParallelTransition(); pt3.getChildren().addAll(st3, tt3); pt3.setNode(rect3); pt3.play(); /*System.out.println(pt3.getNode()); System.out.println(pt3.nodeProperty());*/ pane.getChildren().addAll(rect, rect2, rect3); Scene scene = new Scene(pane, 600, 400); window.setScene(scene); window.setTitle("ParallelTransition"); window.show(); window.setOnCloseRequest(event -> { if (pt != null) pt.stop(); if (pt2 != null) pt2.stop(); if (pt3 != null) pt3.stop(); }); } public void newWindow11() { Stage window = new Stage(); Pane pane = new Pane(); pane.setPrefWidth(500.0); FadeTransition ft = new FadeTransition(Duration.seconds(2.5)); ft.setAutoReverse(true); ft.setFromValue(1.0); ft.setToValue(0.3); ft.setCycleCount(2); ft.setInterpolator(Interpolator.LINEAR); TranslateTransition tt = new TranslateTransition( Duration.seconds(5.0)); tt.setAutoReverse(true); tt.setFromX(0.0); tt.setToX(400.0); tt.setCycleCount(2); tt.setInterpolator(Interpolator.EASE_BOTH); Rectangle rect = new Rectangle(50.0, 50.0); rect.setFill(Color.RED); rect.relocate(50.0, 50.0); //SequentialTransition sqtr = new SequentialTransition(rect, ft, tt); SequentialTransition sqtr = new SequentialTransition(rect); sqtr.getChildren().addAll(ft, tt); sqtr.setCycleCount(Animation.INDEFINITE); sqtr.play(); RotateTransition rt2 = new RotateTransition( Duration.seconds(5.0)); rt2.setAutoReverse(true); rt2.setFromAngle(0.0); rt2.setToAngle(360.0); rt2.setCycleCount(2); rt2.setInterpolator(Interpolator.LINEAR); TranslateTransition tt2 = new TranslateTransition( Duration.seconds(5.0)); tt2.setAutoReverse(true); tt2.setFromX(0.0); tt2.setToX(400.0); tt2.setCycleCount(2); tt2.setInterpolator(Interpolator.EASE_BOTH); Rectangle rect2 = new Rectangle(50.0, 50.0); rect2.setFill(Color.DARKGREEN); rect2.relocate(50.0, 150.0); SequentialTransition sqtr2 = new SequentialTransition(rt2, tt2); sqtr2.setNode(rect2); sqtr2.setCycleCount(Animation.INDEFINITE); sqtr2.play(); ScaleTransition st3 = new ScaleTransition( Duration.seconds(2.5)); st3.setAutoReverse(true); st3.setFromX(1.0); st3.setFromY(1.0); st3.setToX(2.0); st3.setToY(2.0); st3.setCycleCount(2); st3.setInterpolator(Interpolator.LINEAR); TranslateTransition tt3 = new TranslateTransition( Duration.seconds(5.0)); tt3.setAutoReverse(true); tt3.setFromX(0.0); tt3.setToX(400.0); tt3.setCycleCount(2); tt3.setInterpolator(Interpolator.EASE_BOTH); Rectangle rect3 = new Rectangle(50.0, 50.0); rect3.setFill(Color.BLUE); rect3.relocate(50.0, 250.0); SequentialTransition sqtr3 = new SequentialTransition(); sqtr3.getChildren().addAll(st3, tt3); sqtr3.setNode(rect3); sqtr3.setCycleCount(Animation.INDEFINITE); sqtr3.play(); //System.out.println(sqtr3.getNode()); pane.getChildren().addAll(rect, rect2, rect3); Scene scene = new Scene(pane, 600, 400); window.setScene(scene); window.setTitle("SequentialTransition"); window.show(); window.setOnCloseRequest(event -> { if (sqtr != null) sqtr.stop(); if (sqtr2 != null) sqtr2.stop(); if (sqtr3 != null) sqtr3.stop(); }); } public void newWindow12() { Stage window = new Stage(); Pane pane = new Pane(); pane.setPrefWidth(500.0); TranslateTransition tt = new TranslateTransition( Duration.seconds(5.0)); tt.setFromX(0.0); tt.setToX(400.0); tt.setInterpolator(Interpolator.EASE_BOTH); TranslateTransition tt2 = new TranslateTransition( Duration.seconds(5.0)); tt2.setFromX(400.0); tt2.setToX(0.0); tt2.setInterpolator(Interpolator.EASE_BOTH); Rectangle rect = new Rectangle(50.0, 50.0); rect.setFill(Color.RED); rect.relocate(50.0, 50.0); PauseTransition pause = new PauseTransition(); //PauseTransition pause = new PauseTransition(Duration.seconds(2.0)); pause.setDuration(Duration.seconds(2.0)); SequentialTransition sqtr = new SequentialTransition(rect); sqtr.getChildren().addAll(tt, pause, tt2); sqtr.setCycleCount(Animation.INDEFINITE); sqtr.play(); pane.getChildren().addAll(rect); Scene scene = new Scene(pane, 600, 200); window.setScene(scene); window.setTitle("PauseTransition"); window.show(); window.setOnCloseRequest(event -> { if (sqtr != null) sqtr.stop(); }); } }