cocos2dx整个层淡入淡出

前段时间写项目的时候,发现需要将某个层淡入淡出。直接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整个层淡入淡出)