如何在javafx 2.4.0中停止转换后触发事件?

时间:2017-02-18 22:44:19

标签: java animation javafx-2

我的PathTransition动画了几个标签,并有一个setOnFinished - 事件。当使用光标输入标签时,此标签会动画并停止前一个标签的动画(如果有)。

Label l1 = new Label("Hello");
Label l2 = new Label("Hello");

Path path = new Path();
path.getElements().add(new MoveTo(100,100);
path.getElements().add(new LineTo(200,200));

PathTransition pathTransition = new PathTransition();
pathTransition.setDuration(Duration.millis(1000));
pathTransition.setPath(path);
pathTransition.setNode(l1);
pathTransition.setOnFinished(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        // do something
    }
});

pathTransition.play()

// if i enter l2 i want stop the l1 animation
pathTransition.stop()

// animate the l2
// ...

我的问题是pathTransition.stop()会停止动画,但onFinished-event不会触发。在pathTransition停止后是否有任何触发事件的解决方案?

我希望我的问题是可以理解的。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以收听对动画statusProperty

所做的更改
pathTransition.statusProperty().addListener(new ChangeListener<Status>() {

    @Override
    public void changed(ObservableValue<? extends Status> observableValue,
                        Status oldValue, Status newValue) {
          if(newValue==Status.STOPPED){
                //do something
          }            
    }
});