2013-04-22 92 views
0

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

回答

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

0

抱歉,延遲。

這就是我所做的。

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