我发现setopacity函数不适用于我们的一个cocos2d游戏,它使用的是cocos2d 1.0.1。无论我设置什么值,所有ccnode的不透明度始终为255,并且fadein / fadeout操作也不起作用。我们有另一个游戏使用相同版本的cocos2d,但那个游戏完美无缺。有没有人对如何解决这个问题有任何线索?
答案 0 :(得分:2)
CCNodes实际上没有纹理(图像),因此它们没有不透明度属性。我假设您认为设置CCNode的不透明度会影响其子节点,但它不会。不透明度仅影响您为其设置不透明度的对象的纹理。您可以设置CCSprite的不透明度,因为它具有纹理,但这样做不会影响CCSprite的子项。如果要影响多个CCSprite的不透明度,则必须循环遍历所有子项,并为每个子项设置不透明度。
答案 1 :(得分:0)
Basic DrawNode也无法自行处理不透明度(此功能在cocos2d-4。*的计划中)。
您可以从Node
或DrawNode
继承您的课程,并像这样实施setOpacity
:
void AlphaNode::setOpacity(GLubyte opac) {
mOpacity = opac;
if (_bufferCount) {
for (int i = 0; i < _bufferCount; i++) {
_buffer[i].colors.a = mOpacity;
}
}
if (_bufferCountGLPoint) {
for (int i = 0; i < _bufferCountGLPoint; i++) {
_bufferGLPoint[i].colors.a = mOpacity;
}
}
if (_bufferCountGLLine) {
for (int i = 0; i < _bufferCountGLLine; i++) {
_bufferGLLine[i].colors.a = mOpacity;
}
_dirtyGLLine = true;
}
_dirty = true;
}
我认为你可以为Node
执行类似的操作。