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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章