我有一个节点,它是“本地”组的子节点,它是“全局”组的子节点。我想在全局组的坐标中平移孩子,但TranslateTransition在本地组坐标中移动它。
在这个例子中,我有这个父层次结构:
parent group
|- red circle
|- child group
|- blue circle
我想把蓝色圆圈放在红色圆圈的顶部。如果我将它转换为红色圆圈的坐标,它就会远离它,因为它在它自己的组中。如果我翻译整个小组,它会起作用。
import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class AnimTest extends Application {
@Override
public void start(Stage stage) throws Exception {
Circle c = new Circle(5, Color.BLUE);
Group group = new Group(c);
group.setTranslateX(40);
group.setTranslateY(50);
Circle target = new Circle(10, Color.RED);
target.setTranslateX(20);
target.setTranslateY(20);
Group parent = new Group(target, group);
TranslateTransition t1 = new TranslateTransition(Duration.seconds(1), c); // 'group' works
t1.setToX(target.getTranslateX());
t1.setToY(target.getTranslateY());
Button next = new Button("Play");
next.setOnAction(e -> t1.play());
Pane p = new Pane(parent);
p.setPrefSize(200, 200);
VBox root = new VBox(p, next);
stage.setScene(new Scene(root));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
如何在红色圆圈的父级坐标中进行蓝色圆圈的平移?
请理解这是一个简单的例子。事实上,层次结构更大,看起来像
parent group
|- target node
|- group1
|- group2
|- group3
|- moving node
而且我还可以使用目标的边界而不是它的翻译属性来找到最终目的地,但对于示例来说,翻译就足够了。
婷婷同学_
相关分类