我知道您可以在这样的动画中更改圆圈的位置(另请参阅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在动画中变形多边形?
答案 0 :(得分:0)
Polygon
中没有点的单独属性,但您可以Path
LineTo
个,MoveTo
和ClosePath
来设置动画单个坐标的坐标。
示例:强>
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();