Javafx和Sprite动画,如何制作动画周期来更改我的玩家的图片



我创建了一个democharsprite对象,该对象扩展了窗格并保留了字符的图像视图。我在这里只使用了窗格的扩展,因为我是Javafx的新手...但是,实施精灵动画使我感到困惑。

我有一组8个PNG文件,展示了一个头像向北行走。我将它们存储在收集对象中。但是,我不知道我可以使用哪种数据结构可以使其能够实现,以使Javafx循环通过每个集合,并更改我的Democharsprite Pane中的ImageView,以均匀间隔且短的时间显示每个Sprite图片。似乎没有任何内置过渡对象可以用于按顺序显示多个图像。

有人知道这一点吗?

您可以使用以下时间表:

private int imageIndex = 0 ;
private final int frameTime = ... ; // milliseconds
// ...
ImageView imageView = new ImageView();
List<Image> images = new ArrayList<>();
// populate images...
Timeline timeline = new Timeline(new KeyEvent(Duration.millis(frameTime),
    e -> imageView.setImage(images.get(imageIndex++))));
timeline.setCycleCount(images.size());
timeline.play();

另外,您可以仅亚类Transition(这是对文档中示例的简单改编):

ImageView imageView = new ImageView();
List<Image> images = new ArrayList<>();
// populate images...
Transition animation = new Transition() {
    {
        setCycleDuration(Duration.millis(1000)); // total time for animation
    }
    @Override
    protected void interpolate(double fraction) {
        int index = (int) (fraction*(images.size()-1));
        imageView.setImage(images.get(index)); 
    }
}
animation.play();

最新更新