我试图执行以下循环:
这永远重复。我使用了以下内容:
//Step 3
transition.setOnFinished(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
doTheThing(); //Step 1, updates data
transition.setToValue(data);
transition.play(); // Step 2
}
});
transition.play(); //Triggers first repeat
当然,这是一个无休止的递归循环,这不是一个好主意。问题是,我无法弄清楚在转换完成后如何触发重复。我尝试过使用循环:
while (1==1){
doTheThing();
transition.setToValue(data);
transition.play();
}
但这不仅不等待过渡(对我来说是预期而不是问题),它根本不会发生过渡,而且程序没有响应。我也试过这个:
transition.setOnFinished(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
ready = true;
}
});
while (1==1){
if (ready){
ready = false;
doTheThing();
transition.setToValue();
transition.play();
}
}
但它与解决方案#2的行为相同。我宁愿没有编程等待,但即使我这样做,我也不确定如何在循环重复之前使循环等待,而不是停止从播放过渡。
我该怎么做?
答案 0 :(得分:2)
我建议您使用TimeLine
,您可以在其中指定cycleCount
,您可以设置为INDEFINITE
。
示例:
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(1), ev -> {
// TODO do something meaningful here
}));
timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();