更改雪碧阿尔法以前AlphaModifiers

问题描述:

我跑AlphaModifier在雪碧更改雪碧阿尔法以前AlphaModifiers

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

之后,我想再次cahnge mSprite的阿尔法变更为1。
我想:

mSprite.setAlpha(1f); 

它不会工作

我怎么能是阿尔法再次被设置为1?

首先,如果你想要把行为从您修改它之前回来,你应该,否则每个渲染调用它会使用你的参数之前调用

setBlendFunction(IShape.BLENDFUNCTION_SOURCE_DEFAULT, IShape.BLENDFUNCTION_DESTINATION_DEFAULT)

。 此外,由于AlphaModifier将在每个onUpdate()(每个框架至少有一个)被调用,它将覆盖您的新值。您应该删除修改器(或确保在完成修改后删除),然后您可以设置您喜欢的透明度。

+0

我来试试 – 2013-04-24 07:30:14

+0

给我们更新@ ChaitanyaChandurkar – 2013-04-24 11:27:36

+1

我更喜欢另一种方式。你的解决方案也起作用,所以我接受它。 :) – 2013-05-07 06:35:18

抱歉,延迟。

这就是我所做的。

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

阿尔法修饰符Finish后i中的APLHA设置为0。
然后再次注册混合函数。
然后再次注册alpha修正器,使alpha回到1.

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

+0

这是为我工作。我知道可以有更好的解决方案。 – 2013-05-07 06:34:17