我不确定我完全理解这个问题。坐标系之间的转换,但是很难从描述中区分需要在其中转换的坐标系,因此我假设您希望在
robot
到的坐标系
group
.
可以使用
localToParent
从一个节点的坐标系转换为适应所有转换的父节点的坐标系。(
parentToLocal
将实现反向转换,但在这种情况下,这似乎不是必需的转换。)
下面的示例将一条线的起点和终点修改为左上角的坐标以及
Rectangle
在
矩形
的坐标系:
@Override
public void start(Stage primaryStage) {
Group root = new Group();
primaryStage.setScene(new Scene(root, 500, 500));
Rectangle robot = new Rectangle(100, 20, Color.RED);
robot.setLayoutX(125);
robot.setLayoutY(125);
Line line = new Line(125, 125, 125, 25);
robot.rotateProperty().addListener(o -> {
Point2D start = robot.localToParent(0, 0);
Point2D end = robot.localToParent(0, -100);
line.setStartX(start.getX());
line.setStartY(start.getY());
line.setEndX(end.getX());
line.setEndY(end.getY());
});
RotateTransition rotateTransition = new RotateTransition(Duration.seconds(5), robot);
rotateTransition.setCycleCount(Animation.INDEFINITE);
rotateTransition.setFromAngle(0);
rotateTransition.setToAngle(360);
rotateTransition.setInterpolator(Interpolator.LINEAR);
rotateTransition.play();
root.getChildren().addAll(robot, line);
primaryStage.show();
}