美文网首页
cocos2dx整个层淡入淡出

cocos2dx整个层淡入淡出

作者: voiddog | 来源:发表于2016-02-24 20:39 被阅读781次

    前段时间写项目的时候,发现需要将某个层淡入淡出。直接runAction后发现,唉!没有任何效果。后来才知道,原来这个runAction只是对当前的层有效。我就想了一个法子,递归的跑Action。然而这样效率很低下。
    后来偶然间想到,只是透明度的变化不能应用于子节点,我可不可以把当前设置透明度的函数重写成递归的函数,尝试了一下!果然可以!

    void BaseLayer::setOpacity(GLubyte value) {
        Layer::setOpacity(value);
        dfsSetOpacity(this, value);
    }
    
    void BaseLayer::dfsSetOpacity(Node* node, GLubyte& value) {
        for (int i = node->getChildrenCount() - 1; i >= 0; --i) {
            dfsSetOpacity(node->getChildren().at(i), value);
            node->getChildren().at(i)->setOpacity(value);
        }
    }
    

    相关文章

      网友评论

          本文标题:cocos2dx整个层淡入淡出

          本文链接:https://www.haomeiwen.com/subject/uqeikttx.html