JavaFX动画

JavaFX动画,javafx,key-value,Javafx,Key Value,我已经阅读了一些JavaFX教程,我对所使用的动画系统有一些问题 Timeline timeline = new Timeline(); Node circle = circles; timeline.getKeyFrames().addAll( new KeyFrame(Duration.ZERO, // set start position at 0 new KeyValue(circle.tran

我已经阅读了一些JavaFX教程,我对所使用的动画系统有一些问题

    Timeline timeline = new Timeline();
    Node circle = circles;
    timeline.getKeyFrames().addAll(
                new KeyFrame(Duration.ZERO, // set start position at 0
                   new KeyValue(circle.translateXProperty(), random() * 800),
                   new KeyValue(circle.translateYProperty(), random() * 600)),

                new KeyFrame(new Duration(40000), // set end position at 40s
                   new KeyValue(circle.translateXProperty(), random() * 800),
                   new KeyValue(circle.translateYProperty(), random() * 600)));

    // play 40s of animation
    timeline.play();
    primaryStage.show();
}
我不明白的是translateProperty()函数(和Y)的用法以及KeyValue构造函数中随机数的用途。我理解这个过程的方式是创建了两个关键帧,在两个帧之间插值,KeyValue对象只是节点的不同状态,但我不确定这是否正确

我正在看的教程如下:

我只是在上面的代码中使用了一个圆来简化事情。

代码在40秒内将一个圆从一个随机位置移动(转换)到另一个随机位置。第一个关键帧指定起始平移坐标。第二个关键帧指定端点平移坐标。JavaFX动画子系统负责在场景后面的中间帧上插值平移关键值

代码可以设置不同属性的动画,例如缩放或旋转。它可以使用绝对值,而不是随机值。它只是使用了它所使用的属性和值,因为它们指定了作者在本例中试图实现的效果。

代码在40秒内将一个圆从一个随机位置移动(翻译)到另一个随机位置。第一个关键帧指定起始平移坐标。第二个关键帧指定端点平移坐标。JavaFX动画子系统负责在场景后面的中间帧上插值平移关键值


代码可以设置不同属性的动画,例如缩放或旋转。它可以使用绝对值,而不是随机值。它只是使用了它所使用的属性和值,因为它们指定了作者在本例中试图实现的效果。

如果我理解你的说法正确,那么上面的代码,特别是随机值只是告诉程序在40秒内从一个坐标移动到另一个坐标?我想我不明白的是为什么它不会像newkeyValue(circle.translateYProperty(random()*600))那样编写;然后?
KeyFrame
标记时间点,
KeyValue
标记专用属性在该时间点应具有的值。在给定的示例中,属性
translateY
必须在40秒处有值
random()*600
。@SergeyGrinev,谢谢,我想我现在明白了。如果我正确理解您的说法,上面的代码,特别是随机值,只需告诉程序在40秒内从一个坐标移动到另一个坐标?我想我不明白的是为什么它不会像newkeyValue(circle.translateYProperty(random()*600))那样编写;然后?
KeyFrame
标记时间点,
KeyValue
标记专用属性在该时间点应具有的值。在给定的示例中,属性
translateY
必须在40秒处有值
random()*600
。@SergeyGrinev谢谢,我想我现在知道了。