第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秒で回り続けます
簡単ですね! 素晴らしい