我在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?
答案 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。
它也给出了一点动画效果,我更喜欢这种方式。