HI是否有可能减慢时间线滴答? 我的意思是我们可以操纵关键帧持续时间。
当轮盘开始快速旋转并减速时,我想达到轮盘赌的效果。
但关键帧只创建一次并添加到时间轴。
我的代码目前看起来像这样。
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循环中使用判断线程睡眠吗? 然后观察它并随时使用?
答案 0 :(得分:1)
您可以构建KeyFrame
的列表,将它们全部添加到时间轴,然后只播放一次时间轴。以下等同于您尝试实现的内容:请注意,掷骰子需要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();