更改之前由AlphaModifiers更改的Sprite alpha

时间:2013-04-22 13:49:17

标签: android andengine alphablending alpha-transparency

我在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?

2 个答案:

答案 0 :(得分:1)

首先,如果您想在修改之前将行为恢复原状,则应该调用

setBlendFunction(IShape.BLENDFUNCTION_SOURCE_DEFAULT, IShape.BLENDFUNCTION_DESTINATION_DEFAULT)

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

答案 1 :(得分:0)

抱歉抱歉。

这就是我所做的。

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。

它也给出了一点动画效果,我更喜欢这种方式。