Cocos2d-x 子类随父类透明度变化而变化

最近写动画遇到这么一个问题:给父view设置渐入动画时,子view没有跟随父view渐变
其代码如下:

self.view:setOpacity(0)
self.view:runAction(cc.FadeIn:create(10))

查看源码发现可以设置级联view透明度的开关设置

spriteNode:setOpacity(0)
spriteNode:runAction(cc.FadeIn:create(10))
spriteNode:setCascadeOpacityEnabled(true)//参数为true,则子类随父类变化而变化

但是发现只是spriteNode的第一层子view发生了渐变,子view的孩子没有随其变化
解决办法:

--子类随父类透明度变化而变化递归设置
function utils:setCascadeOpacityEnabled( node, is_true )  
    if node then
        if node.setCascadeOpacityEnabled then
            node:setCascadeOpacityEnabled( is_true)
        end
        local children = node:getChildren()
        for _, child in ipairs(children or {}) do
            utils:setCascadeOpacityEnabled( child, is_true) --递归设置
        end
    end
end

总结:

node:setCascadeOpacityEnabled(true)/;//参数为true,则子类随父类变化而变化
注:这个方法只设置一级子view随父类透明度变化而变化

你可能感兴趣的:(Cocos2d-x 子类随父类透明度变化而变化)