首页 > 解决方案 > 不能在单独的类中添加到根目录?

问题描述

我正在使用 javaFX,我想将一个 Rectangle 对象从一个单独的玩家类添加到游戏根目录。因此,我在我的游戏中创建了一个 getRoot 函数,并尝试从我的播放器类中添加矩形。尽管由于某种原因它只是不起作用。

public class Test {
    public void run() {
        System.out.println("loaded");
        GameScene gameScene = new GameScene();
        gameScene.getRoot().getChildren().add(new Sprite(50,50,50,50, Color.GREEN,"TEST", 1, 0));
    }
}

public class GameScene {

    private Group root = new Group();

    public Scene getScene(){

        Scene scene = new Scene(root, Color.BLACK);
        Test test = new Test();
        test.run();

        return scene;
    }

    public Group getRoot() {
        return root;
    }

}

当我运行它时,gameScene 仍然是空的,尽管“加载”字符串被打印到控制台。

标签: javajavafxroot

解决方案


试试这个通过另一个类修改root:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class GameScene extends Application {

    private Group root;
    @Override
    public void start(Stage stage) {
        root = new Group();
        stage.setScene(getScene());
        stage.show();
    }

    public Scene getScene(){

        Scene scene = new Scene(root);
        Test test = new Test();
        test.run(root);
        return scene;
    }

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

class Test {

    public void run(Group root) {
        root.getChildren().add(new Rectangle(50, 50, Color.BLACK));
    }
}

推荐阅读