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