首页 > 解决方案 > 在迭代之间更改动画的值

问题描述

我正在尝试使用动画计时器句柄(现在很久)方法更改旋转动画的参数(x、y、z 和 vv),但我不知道如何在每次迭代时重定向值。

我试过在那里放置构造函数:

Cylinder cyli = new Cylinder(200,40);        
Translate trans3 = new Translate(0, 0, 0);        
cyli.getTransforms().add(trans3);
cyli.setMaterial(pm);
cyli.setDrawMode(DrawMode.LINE);

Group group = new Group();
group.setTranslateX(150);
group.setTranslateY(150);
group.setTranslateZ(100);
rotate = new Rotate(0, axis);
group.getTransforms().setAll(rotate);

group.getChildren().add(cyli);

center.getChildren().add(group);

final Timeline rotationAnimation = new Timeline();
rotationAnimation.setCycleCount(1);

timer = new AnimationTimer() {
    @Override
    public void handle(long now) {
        axis = new Point3D(x, y, z);
        rotate = new Rotate(0, axis);

        speed = 1/vv; 
        duration = Duration.seconds(speed);         
        //x, y, z and vv are values set by the user (variables)
    }
};

duration = Duration.seconds(speed);

KeyValue keyValue1 = new KeyValue(rotate.angleProperty(),360);
KeyFrame keyFrame1 = new KeyFrame(duration, keyValue1);

rotationAnimation.getKeyFrames().add(keyFrame1);

rotationAnimation.play();
timer.start();

我想在动画期间或动画之间更改 x、y、z 和 vv 值,这些值可以在任何给定时间更改,但它们保持不变。我开始认为我需要以某种方式将整个组移动到 handle 方法,但我不知道如何去做。

标签: javaanimationjavafx3d

解决方案


推荐阅读