为了账号安全,请及时绑定邮箱和手机立即绑定

如何在父坐标系中平移节点?

如何在父坐标系中平移节点?

哆啦的时光机 2021-08-04 16:01:48
我有一个节点,它是“本地”组的子节点,它是“全局”组的子节点。我想在全局组的坐标中平移孩子,但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而且我还可以使用目标的边界而不是它的翻译属性来找到最终目的地,但对于示例来说,翻译就足够了。
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

你可以translate使用任何节点setTranslateX()setTranslateY()问题是如何知道你需要在每个方向上平移的量,
你可以通过获得Node你想要移动的边界来做到这一点

Bounds nodeBounds = node.localToScreen(node.getBoundInLocal());

以及目标节点的边界,然后您可以使用它们的边界进行翻译我希望这可能会有所帮助


查看完整回答
反对 回复 2021-08-04
  • 2 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信