【问题标题】:Change Sprite alpha previously changed by AlphaModifiers更改先前由 AlphaModifiers 更改的 Sprite alpha
【发布时间】:2013-04-22 13:49:16
【问题描述】:

我在 Sprite 上运行 AlphaModifier

mSprite.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
mSprite.registerEntityModifier(new AlphaModifier(.5f,1,0.4f));

之后,我想再次将 mSprite 的 alpha 更改为 1。
我试过了:

mSprite.setAlpha(1f); 

不会用的

如何将 alpha 再次设置为 1?

【问题讨论】:

    标签: android andengine alphablending alpha-transparency


    【解决方案1】:

    首先,如果你想恢复修改之前的行为,你应该调用

    setBlendFunction(IShape.BLENDFUNCTION_SOURCE_DEFAULT, IShape.BLENDFUNCTION_DESTINATION_DEFAULT)

    否则在每次渲染调用之前,它将使用您的参数。 此外,由于每次 onUpdate() 都会调用 AlphaModifier(这意味着每帧至少一个),它将覆盖您的新值。您应该移除修饰符(或确保在完成后将其移除),然后您可以设置您喜欢的透明度。

    【讨论】:

    • 我更喜欢另一种方式。你的解决方案也有效,所以我接受了。 :)
    【解决方案2】:

    抱歉耽搁了。

    这就是我所做的。

    mSprite.setAlpha(0);
    mSprite.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
    mSprite.registerEntityModifier(new AlphaModifier(.5f,0,1));
    

    在 Alpha 修改器完成后,我将 aplha 设置为 0。
    然后再次注册混合功能。
    然后再次注册 alphaModifier 将 alpha 带回 1。

    它也提供了一点动画效果,所以我更喜欢这种方式。

    【讨论】:

    • 这对我有用。我知道对此可能有更好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2011-07-25
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多