加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

CCNode如何变换父亲节点parent

发布时间:2020-12-14 20:03:15 所属栏目:百科 来源:网络整理
导读:CCNode更换父亲节点,看似很简单,但其实没有那么简单 最初,我的想法就是,直接从父亲节点移除自己,再添加到新的父亲节点就OK node-removeFromParent(); newParent-addChild(node); 但是后来发现,这样会把node释放掉 考虑了下,估计是因为cleanup掉了,所

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读