TranslateTransition не будет работать во второй раз
public void sky(Node node, double xDest, double yDest) {
TranslateTransition tTrans = new TranslateTransition(
Duration.seconds(4), node);
// tTrans.setFromX(xPlec);
tTrans.setToX(xDest);
tTrans.setRate(2);
tTrans.setInterpolator(Interpolator.LINEAR);
// tTrans.setFromY(yPlec);
tTrans.setToY(yDest);
tTrans.setRate(2);
tTrans.setInterpolator(Interpolator.LINEAR);
node.setLayoutX(node.getLayoutX() + xDest);
node.setLayoutY(node.getLayoutY() + yDest);
tTrans.play();
}
И вот мой метод, когда кнопка нажата
public void setDateFwd(MouseEvent event) {
bFwd.setOnMouseClicked(e -> {
if (data.getValue().equals(LocalDate.of(2014, 8, 15))) {
sky(Sirius, 35.5, 4.5);
sky(Procyon, 35.5, 4.5);
sky(Beetlegeuse, 35.5, 4.5);
sky(Polux, 35.5, 4.5);
sky(Capella, 35.5, 4.5);
sky(Regulus, 35.5, 4.5);
sky(Rigel, 35.5, 4.5);
sky(Aldebaran, 35.5, 4.5);
sky(Castor, 35.5, 4.5);
sky(Mirphak, 35.5, 4.5);
}
});
}
если я щелкаю по нему в первый раз, он работает нормально (он перемещает мой объект из точки A в точку B с помощью анимации), но если я щелкаю по нему во второй раз, он просто перемещает объект (он делает его исчезающим из точки A и появляется в точке B) и я хочу, чтобы он переместился из точки А в точку Б, чтобы я мог видеть, как он движется на расстоянии, может кто-нибудь помочь, пожалуйста?
1 ответ
Решение
Вам необходимо указать fromXProperty
а также fromYProperty
свойства и не должны изменять значения макета
public void sky(Node node, double xDest, double yDest) {
TranslateTransition tTrans = new TranslateTransition(Duration.seconds(4), node);
tTrans.setFromX(0);
tTrans.setFromY(0);
tTrans.setToX(xDest);
tTrans.setToY(yDest);
tTrans.setRate(2);
tTrans.setInterpolator(Interpolator.LINEAR);
tTrans.play();
}