前段時(shí)間寫(xiě)項(xiàng)目的時(shí)候温峭,發(fā)現(xiàn)需要將某個(gè)層淡入淡出。直接runAction
后發(fā)現(xiàn)诡延,唉鉴象!沒(méi)有任何效果忙菠。后來(lái)才知道,原來(lái)這個(gè)runAction
只是對(duì)當(dāng)前的層有效纺弊。我就想了一個(gè)法子牛欢,遞歸的跑Action
。然而這樣效率很低下淆游。
后來(lái)偶然間想到傍睹,只是透明度的變化不能應(yīng)用于子節(jié)點(diǎn),我可不可以把當(dāng)前設(shè)置透明度的函數(shù)重寫(xiě)成遞歸的函數(shù)稽犁,嘗試了一下焰望!果然可以!
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);
}
}