JavaFXでアニメーション作製（力技）

#ソースコード
いきなりソースコードを投下します。

```

import javafx.animation.FadeTransition;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
import javafx.util.Duration;

public class NodeCalc extends Application {
	public void start(Stage stage) {
		final Group root = new Group();
		Scene scene = new Scene(root, 650, 700);
		stage.setScene(scene);
		stage.show();
		int x1 = 30, x2 = 100, x3 = 200, x4 = 300, x5 = 450, x6 = 200, x7 = 250, x8 = 500, x9 = 550, x10 = 340,
				x11 = 360, x12 = 100, x13 = 375;
		int y1 = 500, y2 = 200, y3 = 40, y4 = 300, y5 = 200, y6 = 550, y7 = 600, y8 = 500, y9 = 600, y10 = 400,
				y11 = 200, y12 = 400, y13 = 500;
		Circle c1 = new Circle(x1, y1, 20, Color.BLACK);
		Circle c2 = new Circle(x2, y2, 20, Color.BLACK);
		Circle c3 = new Circle(x3, y3, 20, Color.BLACK);
		Circle c4 = new Circle(x4, y4, 20, Color.BLACK);
		Circle c5 = new Circle(x5, y5, 20, Color.BLACK);
		Circle c6 = new Circle(x6, y6, 20, Color.BLACK);
		Circle c7 = new Circle(x7, y7, 20, Color.BLACK);
		Circle c8 = new Circle(x8, y8, 20, Color.BLACK);
		Circle c9 = new Circle(x9, y9, 20, Color.BLACK);
		Circle c10 = new Circle(x10, y10, 20, Color.BLACK);
		Circle c11 = new Circle(x11, y11, 20, Color.BLACK);
		Circle c12 = new Circle(x12, y12, 20, Color.BLACK);
		Circle c13 = new Circle(x13, y13, 20, Color.BLACK);
		Line l1 = new Line(x1, y1, x2, y2);
		Line l2 = new Line(x3, y3, x2, y2);
		Line l3 = new Line(x3, y3, x4, y4);
		Line l4 = new Line(x4, y4, x10, y10);
		Line l5 = new Line(x5, y5, x10, y10);
		Line l6 = new Line(x6, y6, x7, y7);
		Line l7 = new Line(x7, y7, x13, y13);
		Line l8 = new Line(x8, y8, x13, y13);
		Line l9 = new Line(x9, y9, x13, y13);
		Line l10 = new Line(x10, y10, x13, y13);
		Line l11 = new Line(x11, y11, x4, y4);
		Line l12 = new Line(x12, y12, x4, y4);
		// なぜかrootにうわがかれる
		// Group vanish1 = new Group();
		// vanish1.getChildren().addAll(c5,c6,c8,c9,c11,c12,l1,l5,l6,l8,l9,l11,l12);
		// Group vanish2 = new Group();
		// vanish2.getChildren().addAll(c2,c7,l2,l7);
		root.getChildren().addAll(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, l1, l2, l3, l4, l5, l6, l7,
				l8, l9, l10, l11, l12);
		FadeTransition fadein = new FadeTransition(new Duration(4000));
		fadein.setNode(root);
		fadein.setToValue(1.0);
		Timeline timeline = new Timeline();
		timeline.setAutoReverse(true);
		timeline.setCycleCount(10);
		// 初期状態
		KeyFrame key1 = new KeyFrame(new Duration(0), new KeyValue(root.opacityProperty(), 1.0));
		// 2s後完全消滅
		KeyFrame key2 = new KeyFrame(new Duration(2000), new KeyValue(c1.opacityProperty(), 0));
		KeyFrame key3 = new KeyFrame(new Duration(2000), new KeyValue(l1.opacityProperty(), 0));
		KeyFrame key4 = new KeyFrame(new Duration(2000), new KeyValue(c5.opacityProperty(), 0));
		KeyFrame key5 = new KeyFrame(new Duration(2000), new KeyValue(c6.opacityProperty(), 0));
		KeyFrame key6 = new KeyFrame(new Duration(2000), new KeyValue(c8.opacityProperty(), 0));
		KeyFrame key7 = new KeyFrame(new Duration(2000), new KeyValue(c9.opacityProperty(), 0));
		KeyFrame key8 = new KeyFrame(new Duration(2000), new KeyValue(c11.opacityProperty(), 0));
		KeyFrame key9 = new KeyFrame(new Duration(2000), new KeyValue(c12.opacityProperty(), 0));
		KeyFrame key10 = new KeyFrame(new Duration(2000), new KeyValue(l1.opacityProperty(), 0));
		KeyFrame key11 = new KeyFrame(new Duration(2000), new KeyValue(l5.opacityProperty(), 0));
		KeyFrame key12 = new KeyFrame(new Duration(2000), new KeyValue(l6.opacityProperty(), 0));
		KeyFrame key13 = new KeyFrame(new Duration(2000), new KeyValue(l8.opacityProperty(), 0));
		KeyFrame key14 = new KeyFrame(new Duration(2000), new KeyValue(l9.opacityProperty(), 0));
		KeyFrame key15 = new KeyFrame(new Duration(2000), new KeyValue(l11.opacityProperty(), 0));
		KeyFrame key16 = new KeyFrame(new Duration(2000), new KeyValue(l12.opacityProperty(), 0));
		// 6s後完全消滅
		KeyFrame key17 = new KeyFrame(new Duration(6000), new KeyValue(c2.opacityProperty(), 0));
		KeyFrame key18 = new KeyFrame(new Duration(6000), new KeyValue(c7.opacityProperty(), 0));
		KeyFrame key19 = new KeyFrame(new Duration(6000), new KeyValue(l2.opacityProperty(), 0));
		KeyFrame key20 = new KeyFrame(new Duration(6000), new KeyValue(l7.opacityProperty(), 0));
		// 10s後完全消滅
		KeyFrame key21 = new KeyFrame(new Duration(10000), new KeyValue(c3.opacityProperty(), 0));
		KeyFrame key22 = new KeyFrame(new Duration(10000), new KeyValue(c13.opacityProperty(), 0));
		KeyFrame key23 = new KeyFrame(new Duration(10000), new KeyValue(l3.opacityProperty(), 0));
		KeyFrame key24 = new KeyFrame(new Duration(10000), new KeyValue(l10.opacityProperty(), 0));
		timeline.getKeyFrames().add(key1);
		timeline.getKeyFrames().add(key2);
		timeline.getKeyFrames().add(key3);
		timeline.getKeyFrames().add(key3);
		timeline.getKeyFrames().add(key4);
		timeline.getKeyFrames().add(key5);
		timeline.getKeyFrames().add(key6);
		timeline.getKeyFrames().add(key7);
		timeline.getKeyFrames().add(key8);
		timeline.getKeyFrames().add(key9);
		timeline.getKeyFrames().add(key10);
		timeline.getKeyFrames().add(key11);
		timeline.getKeyFrames().add(key12);
		timeline.getKeyFrames().add(key13);
		timeline.getKeyFrames().add(key14);
		timeline.getKeyFrames().add(key15);
		timeline.getKeyFrames().add(key16);
		timeline.getKeyFrames().add(key17);
		timeline.getKeyFrames().add(key18);
		timeline.getKeyFrames().add(key19);
		timeline.getKeyFrames().add(key20);
		timeline.getKeyFrames().add(key21);
		timeline.getKeyFrames().add(key22);
		timeline.getKeyFrames().add(key23);
		timeline.getKeyFrames().add(key24);
		timeline.play();
	}

	public static void main(String[] args) {
		launch(args);
	}
}
```

これを実行すると、直線でつながれたノードが表示されて、外側から消えていく様子を見ることができます。
実行して出てきた画面を保存する術を知らないので、ここで張り付けることはかないませんでした。
また、中盤でコメントアウトしている、「vanish1」「vanish2」はなぜかその後設定した「root」にうわがかれてしまいました。課題です。

書いている途中で思ったのですが、「key1」「key2」・・・「key24」をtimelineにaddするための繰り返し処理（for文的なやつ）てどうやって書くんでしょう。。。。