我正在尝试设置一些动画,以便在我的应用程序切换表格时播放。

我有用于在Abstract类上隐藏表单的代码,该类由应用程序上使用的所有表单实现。

final synchronized void hide(){
    final Timeline timeline = new Timeline();

    timeline.setCycleCount(1);
    timeline.setAutoReverse(true);

    final KeyValue[] kvArray = new KeyValue[2];
    kvArray[0] = new KeyValue(this.getNode().scaleXProperty(), 0);
    kvArray[1] = new KeyValue(this.getNode().scaleYProperty(), 0);
    final KeyFrame kf = new KeyFrame(Duration.millis(500), kvArray);

    timeline.getKeyFrames().add(kf);
    timeline.play();
}

然后,Controller类调用此方法,播放隐藏动画,并显示下一个表单。所有表单都显示在边框窗格的中心,因此要切换表单,我必须在使用的边框窗格的中心切换节点。

问题是时间轴播放异步,因此hide函数在动画播放之前返回,并且新窗体不显示动画。

我尝试使用等待通知和onFinished事件未成功。

从这里出发的最佳方法是什么?

最佳答案

您是否尝试过将Timeline从局部变量转换为管理表单转换并在其中实例化该类的字段。然后让hide()仅将KeyFrame附加到更全局的Timeline ...

关于java - 时间轴上的Java FX回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20059455/

10-09 13:19