我正在尝试在每一行的每个框中开始转换,连续的框(从左到右)在前一个框完成之前开始自己的转换。我看了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);
}
...
}
答案 0 :(得分:3)
Animation
方法之前, play()
才会启动。因此,在不同的地方单独创建它们然后添加到ParallelTransition
是有效的。
ParallelTransition pt = new ParallelTransition();
...
for(...) {
Timeline tl = new Timeline();
...
pt.getChildren().add(tl);
}
...
pt.play();