cocos2d-x-v4中Node的setOpacity方法失效问题求助
问题原因与解决方案
在cocos2d-x v4中,普通Node节点本身没有可渲染内容,它的setOpacity默认不会将透明度传递给子节点——这就是你给父Node设置透明度但子Sprite毫无变化的核心原因。而Sprite属于可渲染节点,它的透明度属性直接作用于自身绘制内容,所以直接设置就能生效。
要让父Node的透明度影响子节点,只需给Node启用透明度继承:
修改后的代码
Node* testNode = Node::create(); testNode->setPosition(100, s.height / 2); // 启用透明度继承,子节点会继承父节点的透明度 testNode->setCascadeOpacityEnabled(true); Sprite* testSprite = Sprite::create("cocosui/CloseSelected.png"); testNode->addChild(testSprite); addChild(testNode); testNode->setScale(10); testNode->setOpacity(0);
补充说明
- Node作为容器节点,默认关闭了透明度、颜色等属性的继承,目的是避免不必要的性能开销
- 如果需要让子节点继承父节点的颜色,可调用
setCascadeColorEnabled(true)实现
内容的提问来源于stack exchange,提问作者Hassam Chaudhary
相关产品推荐
相关产品推荐

