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);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容