CCNode如何变换父亲节点parent

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

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

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


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

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

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


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


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

最终找到的可行方案是:


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

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...