0

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

4

2 回答 2

1

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

setBlendFunction(IShape.BLENDFUNCTION_SOURCE_DEFAULT, IShape.BLENDFUNCTION_DESTINATION_DEFAULT)

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

于 2013-04-23T16:21:34.427 回答
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。

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

于 2013-05-07T06:32:37.863 回答