转换结束时JavaFX重复循环

时间:2015-04-17 13:27:18

标签: java loops javafx transition wait

我试图执行以下循环:

  1. 更新一些变量
  2. 根据/代表变量播放转换
  3. 转换完成后,转到1
  4. 这永远重复。我使用了以下内容:

    //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的行为相同。我宁愿没有编程等待,但即使我这样做,我也不确定如何在循环重复之前使循环等待,而不是停止从播放过渡。

    我该怎么做?

1 个答案:

答案 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();