【发布时间】:2015-07-28 12:51:35
【问题描述】:
我正在尝试做一些基本的动画,但在最简单的事情上失败了:
Rectangle rect = new Rectangle(100.0, 10.0);
mainPane.getChildren().add(rect); //so the rectangle is on screen
Animation anim = new Timeline(new KeyFrame(Duration.seconds(30.0),
new KeyValue(rect.widthProperty(), 0.0, Interpolator.LINEAR)));
rect.setOnMouseClicked(e -> {
if (anim.getStatus() == Status.RUNNING) {
anim.pause();
} else {
anim.setRate(Math.random() * 5.0);
anim.play();
System.out.println(anim.getRate());
}
});
我面临的问题是,当我多次单击矩形时,大小会随机跳跃,而不是仅仅改变它下降的速度。例如,我让它以大约 2.5 的速度运行到大约 50% 的大小,然后停止它。当我再次启动它时,它会跳到一个完全不同的大小,较小的速度较低,较大的速度较高,例如〜20%〜1.0速度或〜80%〜4.5速度。
起初我认为动画是针对新速度预先计算的,因此如果它从一开始就以新速度播放到暂停前已经播放的时间,它就会跳到它应该的位置,但速度越小,它就越大,这真的没有意义。
如何在不跳动的情况下更改动画的速度/速率?
【问题讨论】: