You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求简洁易懂的JavaFX 2D动画实现:月球绕地球、地球绕太阳旋转

简洁JavaFX实现嵌套旋转动画(月球绕地球+地球绕太阳)

下面是一段极简的JavaFX代码,直接实现你要的嵌套旋转效果,没有多余复杂的太阳系逻辑,核心只保留嵌套旋转的关键实现:

import javafx.animation.RotateTransition;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;

public class NestedRotationAnimation extends Application {

    @Override
    public void start(Stage primaryStage) {
        // 创建核心天体:太阳、地球、月球
        Circle sun = new Circle(400, 300, 30, Color.GOLDENROD);
        Circle earth = new Circle(550, 300, 15, Color.DODGERBLUE);
        Circle moon = new Circle(600, 300, 8, Color.LIGHTGRAY);

        // 布局容器
        Pane root = new Pane(sun, earth, moon);
        Scene scene = new Scene(root, 800, 600);

        // 地球绕太阳旋转的动画
        RotateTransition rotateEarth = new RotateTransition(Duration.seconds(10), earth);
        rotateEarth.setByAngle(360);
        rotateEarth.setCycleCount(RotateTransition.INDEFINITE);
        // 设置旋转中心为太阳的中心
        rotateEarth.setPivotX(sun.getCenterX());
        rotateEarth.setPivotY(sun.getCenterY());

        // 月球绕地球旋转的动画
        RotateTransition rotateMoon = new RotateTransition(Duration.seconds(2), moon);
        rotateMoon.setByAngle(360);
        rotateMoon.setCycleCount(RotateTransition.INDEFINITE);
        // 设置旋转中心为地球的中心
        rotateMoon.setPivotX(earth.getCenterX());
        rotateMoon.setPivotY(earth.getCenterY());

        // 同时启动两个动画
        rotateEarth.play();
        rotateMoon.play();

        primaryStage.setTitle("Nested Rotation Demo");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

关键逻辑说明

  • 嵌套旋转核心:地球的旋转中心绑定太阳位置,月球的旋转中心绑定地球位置。当地球绕太阳转动时,月球的旋转中心会随地球同步移动,自然实现"月球跟着地球绕太阳转+自身绕地球转"的效果。
  • 动画控制:用RotateTransition实现旋转,Duration控制旋转周期(地球10秒一圈,月球2秒一圈,可自行调整),INDEFINITE设置无限循环。
  • 布局简化:直接用Pane作为容器,所有天体初始位置沿水平方向排列,旋转时自动围绕中心做圆周运动,无需额外计算轨道坐标。

内容的提问来源于stack exchange,提问作者user23299088

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:22:13