同时启动多个动画

时间:2014-10-21 03:05:34

标签: javafx javafx-2 javafx-8

我正在尝试在每一行的每个框中开始转换,连续的框(从左到右)在前一个框完成之前开始自己的转换。我看了SequentialTransition,但似乎暗示过渡是在前一个完成后一个接一个地开始的。

我想我需要为每一行使用ParallelTransition,但我该怎么做呢?

我注意到构造函数是ParallelTransition(Animation... children);是否可以使用所有Animation调用构造函数一次,假设我是如何单独实例化每个Animation的?

GridPane gp;

...

for (int i=0;i<gp.getRowConstraints().size();i++) {

    Timeline tl = new Timeline();
    tl.setCycleCount(Animation.INDEFINITE);
    tl.setDelay(Duration.millis((Math.random() * 2500) + 500));

    for (int j=0;j<gp.getColumnConstraints().size();j++) {

        Tile t = new Tile();

        tl.getKeyFrames().addAll(
            new KeyFrame(Duration.ZERO, new KeyValue(t.hueMultiplier, 15)),
            new KeyFrame(Duration.millis(5000), new KeyValue(t.hueMultiplier, 1))
        );

        gp.add(t, j, i);
    }
    ...
}

Picture of currently running program

1 个答案:

答案 0 :(得分:3)

在您调用Animation方法之前,

play()才会启动。因此,在不同的地方单独创建它们然后添加到ParallelTransition是有效的。

ParallelTransition pt = new ParallelTransition();
...
for(...) {
    Timeline tl = new Timeline();
    ...
    pt.getChildren().add(tl);
}
...
pt.play();