LibGDX - Actor class 的 parent 是如何工作的?

LibGDX - How does the parent of an Actor class work?

初学者,所以这个问题可能有点愚蠢,我很抱歉。

我正在尝试为我正在开发的游戏制作菜单,我正在使用 Scene2d。 我知道 parent 和 child class 是如何工作的,但我在试图理解 Actor class.

时遇到了困难

我创建了一个名为“Actor1”的 class,它从 Actor 扩展而来,覆盖了 draw 方法并简单地绘制了默认的 libgdx 图像:

public class Actor1 extends Actor{

    Texture tex = new Texture("badlogic.jpg");

    public void draw(Batch batch, float alphaParent){
        batch.draw(tex, 0, 0);
    }   
}

它工作正常,但我对“alphaParent”参数有点困惑。所以我做了一些研究,并且阅读了大量关于 parent class 的文章和问题,例如 github wiki :

If the parentAlpha is combined with this actor's alpha as shown, child actors will be influenced by the parent's translucency.

The Batch passed to draw is configured to draw in the parent's coordinates, so 0,0 is the bottom left corner of the parent.

据我所知,我猜 Actor class 是 Actor1 class' parent。但如果是这样,“parent 的坐标”或“parent 的半透明”是什么?它们在哪里初始化或定义,我可以在哪里更改它们?这些参数是来自 Actor class 还是这些参数是由其他东西定义的,比如舞台?

不,当它谈论 parents 时,它不是在谈论 class 层次结构。它谈论的是包含此 Actor 的 Group Actor 实例。 Group 是 Actor 的子class,可以有 Actor children。如果直接将 Actor 添加到 Stage,它的 parent 是位于 (0, 0) 的 root Group,因此您的 Actor 的位置是相对于世界的。

但是你可以将一个Actor添加到一个Group中,然后它的位置是相对于它parent的位置。而alphaParent参数就是parent.

的透明度级别

draw()方法中,您必须始终在绘制之前设置批次的颜色,因为无法保证当前设置的颜色。如果您希望组的 children 与 parent.

一起正确淡入淡出,则应应用 Actor 的 parent alpha

典型的绘制方法如下所示:

    public void draw(Batch batch, float alphaParent){
        Color color = getColor();
        batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);
        batch.draw(tex, 0, 0);
    }