Scene2d LibGDX Java - addActor(myactor) 在其他 类 中工作吗?

Scene2d LibGDX Java - Does addActor(myactor) work inside other classes?

如果我在游戏的主要 class 中声明一个 Stage 'myStage',然后将其传递给 Player(扩展 Actor)的构造函数。然后我可以使用 myStage 的副本将其他演员添加到主舞台(即在 Player class 中添加子弹数组,甚至从 Button class 中添加 Buttons 这样的东西)从内部编码玩家 class。

或者这会导致问题吗?因此,我必须仅从 class 中首次声明舞台的位置添加 Actor() 代码?

我假设您的代码看起来像这样(给予或接受):

public static void main(String [] args)
{
    ...
    Stage myStage = new Stage();
    Player myPlayer = new Player(myStage);

    myStage.addActor(myPlayer);
    ...
}

...

public class Player extends Actor
{

    Stage myStage;        

    public Player(Stage _stage)
    {
        myStage = _stage;

        myStage.addActor(<another Actor object>);
    }
}

由于 Java 中的所有对象都是引用,因此当您将 myStage 传递给 myPlayer 时,您并不是在复制 myStage,而是传递对已声明和初始化的舞台的引用。

简而言之,您可以毫无问题地从播放器 class 内部调用 myStage.addActor()。但是,我建议您查看您的 class 结构,以确保对象(例如您的播放器)仅封装其自身的功能。例如,如果按钮仅用于控制,也许它们应该作为扩​​展 Actor 的 UI class 与 main 方法分开添加到舞台。