何时在libgdx中使用actor?有什么缺点和优点?

时间:2012-05-16 13:17:58

标签: java android actor libgdx stage

我正在编写简单的太阳系模拟器。 这是我的第一个libgdx项目。我在主菜单上使用舞台和演员,非常方便,特别是触摸事件处理。但是......看看这些例子,我看到没有人在实际的游戏逻辑中使用演员。如果我应该使用演员作为星球的父母,或者只是写我自己的班级,我会徘徊。 行星将不会被触摸,它们将仅在帧之间移动,因此动作MoveBy的第三个参数必须是帧之间的时间。 这是缺点。使用Actors的优点是什么?

1 个答案:

答案 0 :(得分:37)

演员的主要优点是动作,命中测试和触摸事件以及演员组。

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

你可以随时调用stage.hit(x,y)来返回第一个返回true的actor,它返回你为它编写的任何命中逻辑(通常用x,y,width,height检查边界)。返回此actor或null以继续遍历actor的命中方法以寻找命中的actor。如果没有演员被击中,则返回Null。

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

您可以将演员组合在一起,将整个演员阵列中的动作,触碰事件等作为一个单元进行。

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

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

相关问题