CCNode如何变换父亲节点parent

来源:互联网 发布:产生1 n随机数 js 编辑:程序博客网 时间:2024/04/30 07:55

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();


0 0
原创粉丝点击