根据命令反转 TranslateTransition
Reversing TranslateTransition on command
我正在尝试在 BorderPane 的左节点上执行 TranslateTransition。单击时我可以将节点转到 'slide in',但 'slide out' 未按预期工作。这是代码片段。
@Override
public void initialize(URL url, ResourceBundle rb) {
vbx_lfpane.setVisible(false);
}
@FXML
private void paneClicked(MouseEvent event) {
if(vbx_lfpane.isVisible()) {
vbx_lfpane.setVisible(false);
TranslateTransition tt1 = new TranslateTransition(Duration.millis(500), vbx_lfpane);
tt1.setFromX(vbx_lfpane.getLayoutBounds().getMinX());
tt1.setToX( - (vbx_lfpane.getLayoutBounds().getMinX() + vbx_lfpane.getWidth()));
tt1.play();
} else {
vbx_lfpane.setVisible(true);
vbx_lfpane.setTranslateX(-vbx_lfpane.getWidth());
TranslateTransition tt2 = new TranslateTransition(Duration.millis(500), vbx_lfpane);
tt2.setByX(vbx_lfpane.getWidth());
tt2.play();
}
}
在开始 "slide out" 过渡之前,您将 vbx_lfpane
的可见性设置为 false
。转换完成后,您需要将可见性设置为 false
:
tt1.setOnFinished(e -> vbx_lfpane.setVisible(false));
tt1.play();
我正在尝试在 BorderPane 的左节点上执行 TranslateTransition。单击时我可以将节点转到 'slide in',但 'slide out' 未按预期工作。这是代码片段。
@Override
public void initialize(URL url, ResourceBundle rb) {
vbx_lfpane.setVisible(false);
}
@FXML
private void paneClicked(MouseEvent event) {
if(vbx_lfpane.isVisible()) {
vbx_lfpane.setVisible(false);
TranslateTransition tt1 = new TranslateTransition(Duration.millis(500), vbx_lfpane);
tt1.setFromX(vbx_lfpane.getLayoutBounds().getMinX());
tt1.setToX( - (vbx_lfpane.getLayoutBounds().getMinX() + vbx_lfpane.getWidth()));
tt1.play();
} else {
vbx_lfpane.setVisible(true);
vbx_lfpane.setTranslateX(-vbx_lfpane.getWidth());
TranslateTransition tt2 = new TranslateTransition(Duration.millis(500), vbx_lfpane);
tt2.setByX(vbx_lfpane.getWidth());
tt2.play();
}
}
在开始 "slide out" 过渡之前,您将 vbx_lfpane
的可见性设置为 false
。转换完成后,您需要将可见性设置为 false
:
tt1.setOnFinished(e -> vbx_lfpane.setVisible(false));
tt1.play();