Cocos2d iphone 完成对其子对象的所有操作后,删除cclayer
我有一个CCLayer,它有多个子元素(sprite、ccmenuitemets)。这些孩子有了自己的孩子(大多是CCLabel***或CCMenuItemImages)。所以我想淡出所有的大孩子们和孩子们的层,然后一旦所有的都淡出,我想删除CCLayer 我能够将淡入淡出动作应用于层次结构。但如果我执行[CCLayer removeFromParentWithCleanup:YES],则当仍有一些子项使用淡入淡出操作运行时,它会立即删除 因此,我的问题是,一旦所有gran子对象和子对象都褪色(不透明度=0),如何删除父层 编辑:下面是一段代码片段Cocos2d iphone 完成对其子对象的所有操作后,删除cclayer,cocos2d-iphone,Cocos2d Iphone,我有一个CCLayer,它有多个子元素(sprite、ccmenuitemets)。这些孩子有了自己的孩子(大多是CCLabel***或CCMenuItemImages)。所以我想淡出所有的大孩子们和孩子们的层,然后一旦所有的都淡出,我想删除CCLayer 我能够将淡入淡出动作应用于层次结构。但如果我执行[CCLayer removeFromParentWithCleanup:YES],则当仍有一些子项使用淡入淡出操作运行时,它会立即删除 因此,我的问题是,一旦所有gran子对象和子对象都褪色(
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。节点有子节点,每个子节点都有自己的子节点。因此,我希望在子节点和gran子节点上完成所有操作后删除节点及其父项层。如何做到这一点?将顶级容器设置为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我正在使用COCOS2d 2.1进行IOS淡入层时,使用顺序:淡入,调用块n,在调用块中,您将拥有[self-removeFromParentWithCleanup:YES]。Self就是这一层。我用代码片段编辑了我的问题。在这种情况下,请您提供帮助。传播发生在更新周期中,即根节点的draw调用之前。无论是将上叶计算为下叶,还是将上叶计算为下叶,您都无法看到差异。意外删除了先前的注释。然而我试着用你的方式来回答。但是不透明性并没有传播到CCLayerColor(self)的后代。我做错了什么?有趣的是:CCLayerColor是从CCNode(不是CCNodeRGBA)派生出来的。。。嗯。我通过将所有内容封装到顶级的CCNodeRGBA对象(作为self)中,并拥有自己版本的CCLayerColor来避免这种情况。谢谢。你还是给了我答案的起点。我会更进一步。