2012-08-07 92 views
1

CCSpriteBatchNode中的不透明度是否可以修改?更改CCSpriteBatchNode中CCSprite的不透明度

下似乎并没有工作:

((CCSprite *)[batchNode getChildByTag:myTag]).opacity = 0.5; 

的精灵就这样消失出改良的不透明度高达代替。

+1

批处理节点的纹理是什么类型的纹理?如果它没有alpha通道(例如RGB565),则任何不透明度<1都会导致精灵消失,因为没有Alpha通道,所以它可能完全不透明或不透明。 – LearnCocos2D 2012-08-07 22:16:42

+0

看起来像是'kCCTexture2DPixelFormat_RGBA8888'。 – SundayMonday 2012-08-08 01:04:49

+0

也在sprite上运行'CCFadeOut'。 – SundayMonday 2012-08-08 01:10:16

回答

13

这就是为什么查看类型是个好主意。 opacityCCSprite的财产是GLubyte。看看GLubyte的typedef,我们看到它实际上是无符号字符,这意味着它取整数值从0到255.使用sprite.opacity = 0.5,您将浮点值隐式转换为无符号字符,0.5的小数部分被截断,并且sprite.opacity变为0 。