java - 何时在 libgdx 中使用 Actor ?什么是缺点和优点?

标签 java android actor libgdx stage

我正在编写简单的太阳系模拟器。 这是我的第一个 libgdx 项目。我在主菜单中使用了舞台和 Actor ,并且非常方便,尤其是触摸事件处理。但是......看看这些例子,我发现没有人在实际游戏逻辑中使用 Actor 。如果我应该使用actor作为行星类的父级,或者只是编写我自己的类,我会徘徊。 行星是不可触摸的,它们只会在帧之间移动,因此 Action MoveBy 的第三个参数必须是帧之间的时间。 这就是缺点。使用 Actors 的优点是什么?

最佳答案

Actor 的主要优点是 Action 、 HitTest 和触摸事件以及 Actor 组。

如果您的游戏逻辑需要, Action 可以快速轻松地进行补间。

您可以随时调用 stage.hit(x, y) 以返回第一个返回 true 的参与者,无论您为它编写的任何命中逻辑(通常检查 x、y、宽度、高度的边界)。返回此 Actor 或 null 以继续遍历 Actor 的命中方法以寻找命中 Actor 。如果没有命中 Actor,则返回 Null。

Hit 用于舞台的触摸事件。 Actor 的触摸方法传递局部坐标,舞台处理对象的重叠,例如如果一个actor覆盖了另一个actor,使得另一个actor不应该接收touchDown,则在覆盖actor上返回true以停止对“下面”actor的touchDown调用。这也将“焦点”设置在返回 true 的 Actor 上,以便调用 Actor 的 touchUp。

您可以将 Actor 组合在一起,以将整个 Actor 组作为一个单元执行 Action 、触摸事件等。

一些缺点: Actor 需要一个在某种程度上限制功能的舞台。许多编码人员使用其他逻辑来确定游戏对象状态,而不是 scene2d Action (例如 box2d)。如果您将 Actors 用于游戏对象,您可能需要两个阶段,一个用于 ui,一个用于游戏世界。如果你不使用它们,你可能会使用你自己的 SpriteBatch 和 Camera。请记住,Actor 只有一个抽象的 Draw 方法,所以无论如何您仍然需要创建绘制逻辑。您可能会将 TextureRegion 或 Sprite 作为 Actor 的私有(private)字段。如果您想使用自己的更新逻辑,您可以重写 act(float delta) 方法来获取增量时间(如果使用 Actions,请调用 super.act(delta))。

因此,如果您有自己的逻辑并且不会使用 Stage 提供的大部分功能,请节省一些资源并推出您自己的特定于应用程序的解决方案。如果您可以在不限制所需功能的情况下使用某些专业人士,那么请为游戏逻辑进行第二阶段。

关于java - 何时在 libgdx 中使用 Actor ?什么是缺点和优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10619394/

相关文章:

java - 如何使用 DeepLearning4J 训练 RBM 和重建输入?

java - 线程在单击按钮时开始,并在单击另一个按钮时结束线程

ios - 让 Actor 重复自己的赛车主题

scala - 从现有的一个线程安全生成一个新的 actor 吗?

java - 为什么 twitter.showUser(12).getLang() 当前返回 null,无论用户 ID 是谁,即使它在过去工作得很好

Java需要正则表达式只能是英文字符。数字和可打印标志

java - 将 ISO8601 T-Z 格式的字符串转换为日期

Android透明 Canvas (surfaceview)

java - 在 Eclipse 中从 XML onClick 为按钮生成方法定义?

scala - Scala在没有var的actor中保持状态