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 方法分开添加到舞台。
如果我在游戏的主要 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 方法分开添加到舞台。