倾听变革的变化 [英] Listen for transformation changes

查看:61
本文介绍了倾听变革的变化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法听转型的变化?我想在例如多维数据集打开时得到通知.特别是我对getLocalToSceneTransform感兴趣.

Is there way to listen for transformation changes? I'd like to get notified when for example a cube has turned. Especially I'am interested in getLocalToSceneTransform.

这是我的尝试:

@Override
public void start(Stage primaryStage) throws Exception {
    final Group root = new Group();
    final Scene scene = new Scene(root);

    final Box cube = new Box(1, 1, 1);
    cube.setRotationAxis(Rotate.Y_AXIS);
    cube.setMaterial(new PhongMaterial(Color.RED));
    root.getChildren().add(cube);
    cube.getLocalToSceneTransform().addEventHandler(TransformChangedEvent.TRANSFORM_CHANGED, (e) -> {
        // never get called
        System.out.println("Transformation has changed");
    });

    final Camera camera = new PerspectiveCamera(true);
    camera.setTranslateZ(-4);
    scene.setCamera(camera);

    final Timeline turnCube = new Timeline();
    turnCube.getKeyFrames().add(new KeyFrame(Duration.seconds(0), new KeyValue(cube.rotateProperty(), 0)));
    turnCube.getKeyFrames().add(new KeyFrame(Duration.seconds(5), new KeyValue(cube.rotateProperty(), 360)));
    turnCube.setCycleCount(Timeline.INDEFINITE);
    turnCube.play();

    primaryStage.setWidth(1024);
    primaryStage.setHeight(768);
    primaryStage.setScene(scene);
    primaryStage.show();
}

在旋转多维数据集时,EventHandler永远不会被调用.

While the cube is turned the EventHandler get never called.

推荐答案

您可以将changeListener添加到多维数据集的localToSceneTransformProperty()中,以便在旋转多维数据集时得到通知.

You can add a changeListener to the cube's localToSceneTransformProperty() to get notified when the cube is rotated.

cube.localToSceneTransformProperty().addListener((value, oldValue, newValue) -> {
     System.out.println("Transformation has changed");
});

这篇关于倾听变革的变化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆