动画结束时的两个动作(setOnFinished)

时间:2016-08-19 01:44:36

标签: java javafx css-animations

我在动画完成后尝试对同一个矩形执行两个不同的操作:矩形必须更改颜色,并且其中的文本必须变为可见。但程序只执行第二个事件,忽略第一个事件(即使我切换它们)。我怎样才能使它工作?

public void open() {
    RotateTransition trans = new RotateTransition(Duration.seconds(1), rec);
    trans.setToAngle(180); 
    trans.setAxis(Rotate.Y_AXIS);
    trans.setOnFinished (event -> tex.setVisible(true));
    trans.setOnFinished (event -> rec.setFill(Color.WHITE));
    trans.play(); 

1 个答案:

答案 0 :(得分:1)

或者:

  1. 只需将它们放在同一个事件处理程序中:

    trans.setOnFinished(event -> {
        text.setVisible(true);
        rec.setFill(Color.WHITE);
    });
    
  2. 或将更改侦听器添加到statusProperty

    trans.statusProperty().addListener((obs, oldStatus, newStatus) -> {
        if (newStatus == Animation.Status.STOPPED) {
            text.setVisible(true);
        }
    });
    
    trans.statusProperty().addListener((obs, oldStatus, newStatus) -> {
        if (newStatus == Animation.Status.STOPPED) {
            rec.setFill(Color.WHITE);
        }
    });