我有一个有多个孩子的CCLayer(Sprites,CCMenuItemImages ets)。这些孩子正在生孩子(主要是CCLabel ***或CCMenuItemImages)。所以我想淡出图层中所有的孙子和孩子,然后一旦褪色,我想删除CCLayer。
我可以将渐变动作应用于层次结构。但是如果我这样做[CCLayer removeFromParentWithCleanup:YES],那么它会立即删除,同时仍有一些孩子正在使用淡入淡出动作。
所以我的问题是,一旦所有格兰儿童和儿童都褪色(不透明度= 0),我该如何删除父图层。
编辑:这是一段代码
for(CCNode *node in itemLayer.children)
{
for(CCSprite *sprite in parentLayer.children)
{
for(id item in sprite.children)
[item runAction:[CCFadeTo actionWithDuration:2.5f opacity:0]];
[sprite runAction:[CCFadeTo actionWithDuration:2.5f opacity:0]];
}
}
itemLayer是具有CCNode *节点的父CCLayer。节点有孩子,每个孩子都有自己的孩子。所以我想在子项和子项上完成所有操作后删除节点及其父项itemLayer。怎么做?
答案 0 :(得分:1)
使您的顶级容器成为CCNodeRGBA并在init中设置:
self.cascadeColorEnabled=YES;
self.cascadeOpacityEnabled=YES;
self.opacity=255;
当您对此运行CCFadeAction时,该节点将执行级联到子项和子项的所有拆分。在淡入淡出动作结束时,
id fade = [CCFadeTo actionWithDuration:2.5 opacity:0];
id done = [CCCallBlock actionWithBlock:^{
[self removeFromParentAndCleanup:YES];
// plus whatever else you see fit
}];
id seq = [CCSequence actions:fade, done, nil];
[self runAction:seq];
ob cit:来自记忆,未编译或测试,YMMV