我发现 setopacity 功能不适用于我们的一款 cocos2d 游戏,它使用的是 cocos2d 1.0.1。无论我设置什么值,所有 ccnode 的不透明度始终为 255,并且淡入/淡出操作也不起作用。我们还有另一款使用相同版本 cocos2d 的游戏,但它运行良好。有没有人知道如何解决这个问题?
问问题
2205 次
2 回答
2
CCNodes 实际上没有纹理(图像),因此它们没有 opacity 属性。我假设您认为设置 CCNode 的不透明度会影响其子节点,但它不会。不透明度仅影响您为其设置不透明度的对象的纹理。您可以设置 CCSprite 的不透明度,因为它具有纹理,但这样做不会影响 CCSprite 的子项。如果要影响多个 CCSprite 的不透明度,则必须遍历所有子项,并为每个子项设置不透明度。
于 2013-02-25T17:44:52.773 回答
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
.
于 2016-09-13T09:39:48.897 回答