CUBは子供の白熊

Java SE 8 実践プログラミングの練習問題を解く

第4章 JavaFX による GUI プログラミング : 問題 9 : アニメーション

問題

惑星を表す円をアニメーション化して、楕円軌道を回るようにせよ

解答

絵はしょぼいですが、やってみましょう

public void start(Stage stage) throws Exception {
    final double rX = 200;
    final double rY = 160;
    final double cX = rX + 24;
    final double cY = rY + 24;
    // 楕円軌道
    Ellipse orbit = new Ellipse(rX, rY);
    orbit.setCenterX(cX);
    orbit.setCenterY(cY);
    orbit.setStroke(Color.LAVENDER);
    orbit.setFill(null);
    // 惑星
    Circle earth = new Circle(16, Color.SLATEBLUE);
    earth.setCenterX(cX + rX);
    earth.setCenterY(cY);
    // 恒星
    Circle sun = new Circle(48, Color.CORAL);
    sun.setCenterX(cX);
    sun.setCenterY(cY);
    // 惑星のトランジション
    PathTransition transition = new PathTransition();
    transition.setNode(earth);
    transition.setPath(orbit);
    transition.setDuration(Duration.millis(4_000));
    transition.setOrientation(OrientationType.ORTHOGONAL_TO_TANGENT);
    transition.setInterpolator(Interpolator.LINEAR);
    transition.setCycleCount(Animation.INDEFINITE);
    transition.play();
    // 配置
    Group group = new Group(orbit, earth, sun);
    stage.setScene(new Scene(group, 2*cX, 2*cY));
    stage.show();
}

惑星が時計回りに一周4秒で回り続けます
簡単ですね! 素晴らしい

f:id:ClosedUnBounded:20150813171357p:plain