如何解决为什么在关键帧中使用 Duration.ZERO 不会改变 JavaFX 中节点的 YProperty?
我正在尝试使用 JavaFX 时间轴为标签制作动画。我需要将标签从舞台外部翻译到内部。因此,我首先使用 Duration.ZERO 将标签的 translateYProperty 设置为负值(在舞台外)。根据我到目前为止所学到的,它应该立即将 YProperty 的值设置为指定值,但是当我打印它时,它显示为零。但是当我使用大于 0 的任何其他 Duration 时,它会正确给出答案。请谁能告诉我我哪里出错了? 代码如下:
Timeline tl = new Timeline();
KeyValue kv = new KeyValue(registerLabel.translateYProperty(),-150);
KeyFrame kf = new KeyFrame(Duration.ZERO,kv);
tl.getKeyFrames().addAll(kf);
tl.setOnFinished(e->System.out.println(registerLabel.translateYProperty().get()));
tl.play();
这会输出 0.0 而不是 -150.0。
注意:这个片段没有做完整的动画。我只展示了代码的相关部分。
然而,此代码给出了正确答案:
Timeline tl = new Timeline();
KeyValue kv = new KeyValue(registerLabel.translateYProperty(),-150);
KeyFrame kf = new KeyFrame(Duration.millis(1),kv);
tl.getKeyFrames().addAll(kf);
tl.setOnFinished(e->System.out.println(registerLabel.translateYProperty().get()));
tl.play();
输出 -150.0。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。