JavaFX:如何更改动画中多边形的点?
JavaFX: How can I change the points of a polygon in an animation?
我知道您可以像这样更改动画中圆圈的位置(另请参阅 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 变形动画中的多边形吗?
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();
我知道您可以像这样更改动画中圆圈的位置(另请参阅 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 变形动画中的多边形吗?
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();