Java 如何减慢时间轴关键帧的持续时间
嗨,有可能减慢时间线的滴答声吗? 我的意思是我们可以操纵关键帧的持续时间 我想达到轮盘赌的效果,当它开始快速旋转和减速 但关键帧只创建一次并添加到时间轴中 我的代码现在看起来像这样Java 如何减慢时间轴关键帧的持续时间,java,javafx,Java,Javafx,嗨,有可能减慢时间线的滴答声吗? 我的意思是我们可以操纵关键帧的持续时间 我想达到轮盘赌的效果,当它开始快速旋转和减速 但关键帧只创建一次并添加到时间轴中 我的代码现在看起来像这样 button.setOnAction(event -> { tick = 0.01; roll.setText("0"); roll.setFont(new Font(72)); timeline = new
button.setOnAction(event -> {
tick = 0.01;
roll.setText("0");
roll.setFont(new Font(72));
timeline = new Timeline();
timeline.setCycleCount(Timeline.INDEFINITE);
final KeyFrame keyFrame = new KeyFrame(Duration.seconds(tick),
e -> {
randomNum = ThreadLocalRandom.current().nextInt(1, 66 + 1);
roll.setText(randomNum + "");
tick = tick + 0.01;
if (tick >= 1.0) timeline.stop();
});
timeline.getKeyFrames().add(keyFrame);
timeline.playFromStart();
});
或者我应该在for循环中使用命令线程睡眠吗?
然后观察并随时使用?您可以创建一个关键帧列表,将它们全部添加到时间线,然后只播放一次时间线。以下内容相当于您尝试实现的内容:请注意,滚动模具将需要10*100*101/2=50500毫秒50.5秒,这可能有点太长,因此您可能需要调整其中的一些值
Duration nextFrameTime = Duration.millis(10);
Timeline timeline = new Timeline();
for (Duration frameTimeIncrement = Duration.millis(10);
frameTimeIncrement.lessThan(Duration.seconds(1));
frameTimeIncrement = frameTimeIncrement.add(Duration.millis(10))) {
KeyFrame keyFrame = new KeyFrame(nextFrameTime,
e -> roll.setText(ThreadLocalRandom.current().nextInt(1, 66 + 1) + ""));
timeline.getKeyFrames().add(keyFrame);
nextFrameTime = nextFrameTime.add(frameTimeIncrement);
}
timeline.play();
谢谢你,詹姆斯,工作很有魅力。