我已经很久没有来过这里了,直到现在为止。
问题是,有一段代码我拼命想让它发挥作用:
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];
}
问题是,尽管我已经尝试将关键帧之前和之后的循环计数设置为无限期,但它似乎根本没有重复。我对此感到有点困惑。
提前致谢。
答案 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("");
}
});