2017-02-18 13 views
1

My PathTransition анимирует несколько ярлыков и имеет setOnFinished -эвентов. Когда метка вводится с помощью курсора, эта метка анимирует и останавливает анимацию предыдущей метки, если она есть.Как запустить событие после перехода в javafx 2.4.0?

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-событие не срабатывает. Есть ли какое-либо решение для запуска события после остановки pathTransition?

Надеюсь, мой вопрос понятен.

Спасибо

ответ

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 
      }    
    } 
}); 
+0

, который помогает мне. спасибо вам =) – jakob