JavaFX:如何更改动画中多边形的点?

时间:2018-04-16 09:32:25

标签: java javafx javafx-8

我知道您可以在这样的动画中更改圆圈的位置(另请参阅here):

timeline.getKeyFrames().addAll(
    new KeyFrame(Duration.ZERO, // set start position at 0
        new KeyValue(circle.translateXProperty(), random() * 800),
        new KeyValue(circle.translateYProperty(), random() * 600)
    ),
    new KeyFrame(new Duration(40000), // set end position at 40s
        new KeyValue(circle.translateXProperty(), random() * 800),
        new KeyValue(circle.translateYProperty(), random() * 600)
    )
);

但是还有可能(这意味着Property)更改动画中多边形的点吗?

如果没有:我还有哪些其他可能性可以使用JavaFX在动画中变形多边形?

1 个答案:

答案 0 :(得分:0)

Polygon中没有点的单独属性,但您可以Path LineTo个,MoveToClosePath来设置动画单个坐标的坐标。

示例:

Pane pane = new Pane();
pane.setPrefSize(400, 400);

MoveTo corner1 = new MoveTo();
LineTo corner2 = new LineTo();
LineTo corner3 = new LineTo();

Path path = new Path(corner1, corner2, corner3, new ClosePath());
pane.getChildren().add(path);

Timeline timeline = new Timeline(
        new KeyFrame(Duration.ZERO,
                new KeyValue(corner1.xProperty(), 200d),
                new KeyValue(corner1.yProperty(), 200d),
                new KeyValue(corner2.xProperty(), 200d),
                new KeyValue(corner2.yProperty(), 200d),
                new KeyValue(corner3.xProperty(), 200d),
                new KeyValue(corner3.yProperty(), 200d)),
        new KeyFrame(Duration.seconds(2),
                new KeyValue(corner1.xProperty(), 100d),
                new KeyValue(corner1.yProperty(), 100d),
                new KeyValue(corner2.xProperty(), 250d),
                new KeyValue(corner2.yProperty(), 300d),
                new KeyValue(corner3.xProperty(), 50d),
                new KeyValue(corner3.yProperty(), 380d)));
timeline.setCycleCount(Animation.INDEFINITE);
timeline.setAutoReverse(true);
timeline.play();