时间轴动画无法正常工作

时间:2013-06-05 12:48:56

标签: java animation javafx-2

我已经很久没有来过这里了,直到现在为止。

问题是,有一段代码我拼命想让它发挥作用:

private Timeline timeline = createTimeline();
timeline.play();
public Timeline createTimeline() {
Timeline timeline = new Timeline();
timeline.setDelay(new Duration(1000));
timeline.getKeyFrames().addAll(
        new KeyFrame(Duration.ZERO, new KeyValue(imageProperty(), moveOneStep())),
        new KeyFrame(new Duration(250), new KeyValue(imageProperty(), moveOneStep())));
timeline.setCycleCount(Timeline.INDEFINITE);
return timeline;
}
public Image moveOneStep() {
    return getNextImage();
}
private Image getNextImage() {
    imgCount++;
    if (imgCount > 2)
        imgCount %= 3;
    return images[imgCount];
}

问题是,尽管我已经尝试将关键帧之前和之后的循环计数设置为无限期,但它似乎根本没有重复。我对此感到有点困惑。

提前致谢。

1 个答案:

答案 0 :(得分:1)

似乎你需要定义一个“关闭关键帧”,以便在最后一个关键帧之前可以播放关键帧。我怀疑,这是“按设计”还是一个错误。

timeline.getKeyFrames().addAll(
        new KeyFrame(Duration.ZERO, new KeyValue(imageProperty(), moveOneStep())),
        new KeyFrame(new Duration(250), new KeyValue(imageProperty(), moveOneStep())),
        new KeyFrame(new Duration(500));

您可以使用ChangeListener跟踪任何属性的更改,例如:

imageProperty().addListener(new ChangeListener<Image>() {
    @Override
    public void changed(ObservableValue<? extends Image> observable, Image oldValue, Image newValue) {
        System.out.println("imageProperty oldValue " + oldValue);
        System.out.println("imageProperty newValue " + newValue);
        System.out.println("");
    }
});