【问题标题】:FadeIn Action in LibGDX not working correctlyLibGDX 中的 FadeIn Action 无法正常工作
【发布时间】:2016-10-15 14:33:16
【问题描述】:

请帮帮我。我试试:

actor.addAction(Actions.fadeOut(1.5f));

我得到: 我所有的舞台都在淡出。

所以,我的问题是,为什么不仅要淡出我应用了 fadeOut 动作的一个演员,还要淡出我的所有舞台(或至少一些其他演员)?

我的渲染:

@Override
    public void render(float delta) {
        Gdx.gl.glClearColor(255, 255, 255, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        stage.draw();
        stage.act();
    }

感谢您的回答。

【问题讨论】:

  • 与您的问题无关,但 glClearColor 期望标准化颜色介于 0 和 1 之间。

标签: libgdx fadein actor fadeout


【解决方案1】:

您自己的任何actor类都必须将其自己的颜色应用于批处理。这对于像 BitmapFont 和 Sprite 这样的东西来说是不必要的,它们直接将彩色顶点传递给批处理,但是任何调用 batch.draw 的演员都需要首先传递颜色,即使它是 Color.WHITE,但通常你会想要传递 @ 987654323@到批次。

这是因为无法保证任何先前绘制的演员在批次中留下了什么颜色。

此外,如果您的演员在组中,并且您希望他们与父母一起淡出,那么他们应该考虑父母 alpha:

Color color = getColor();
batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);

【讨论】:

    【解决方案2】:

    确保你的 actor 的 draw() 实现不会改变批次的颜色

    【讨论】:

    • @Override public void draw(Batch batch, float parentAlpha) { batch.draw(cardTexture, getX(), getY(), getWidth(), getHeight()); super.draw(batch, parentAlpha); }
    • 你是直接扩展actor吗?然后你可以删除 super.draw(batch,parentalpha);否则,请告诉我那个方法。
    • actor.draw 中没有“合同”规定您必须将批次颜色保留为白色。许多 LibGDX 的内置小部件使批次带有任何旧的任意颜色。相反,您需要注意,在对 Actor 进行子类化时,您不能假设传入 actor.draw 的批次的颜色为 WHITE
    猜你喜欢
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2015-04-25
    • 2012-06-29
    相关资源
    最近更新 更多