Java 时间轴动画未按预期工作

Java 时间轴动画未按预期工作,java,animation,javafx-2,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

我好久没来了,当然直到现在

问题是,有一段代码我正拼命想让它工作:

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];
}
问题是,尽管我尝试过在关键帧之前和之后将循环计数设置为不确定,但它似乎根本没有重复。我对这件事有点困惑


提前感谢。

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

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("");
    }
});
imageProperty().addListener(新的ChangeListener()){
@凌驾

public void已更改(observeValueOh,谢谢,但我自己确实找到了答案。我多么愚蠢地认为,每次调用第二个关键帧时,该属性都会更改。相反,该属性会根据我们的方法逐渐更改。我所需要的只是创建一个自定义事件处理程序,并每250毫秒调用一次。