CCNode如何变换父亲节点parent

前端之家收集整理的这篇文章主要介绍了CCNode如何变换父亲节点parent前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

CCNode更换父亲节点,看似很简单,但其实没有那么简单

@H_404_2@ 最初,我的想法就是,直接从父亲节点移除自己,再添加到新的父亲节点就OK

@H_404_2@

node->removeFromParent();  
newParent->addChild(node); 


@H_404_2@

@H_404_2@ 但是后来发现,这样会把node释放掉

@H_404_2@ 考虑了下,估计是因为cleanup掉了,所以又试了下面的方法

node->removeFromParentAndCleanup(false);  
newParent->addChild(node);


@H_404_2@ 但是发现还是会把node释放掉,无论怎么做都不行,甚至下面的方法也不行

@H_404_2@

@H_404_2@

oldParent->removeChild(node);//oldParent->removeChild(node,false); 
//oldParent->removeChildByTag(nodeTag);
//oldParent->removeChildByTag(nodeTag,false);  
newParent->addChild(node); 

最终找到的可行方案是:
@H_404_2@

@H_404_2@

node->getParent()->getChildren()->removeObject(node,false);  
node->setParent(NULL);  
newParent->addChild(node);  
node->release();

猜你在找的Cocos2d-x相关文章