cocos2d-x删除了要再次添加的子项将无法正常工作

时间:2013-09-24 09:21:56

标签: cocos2d-x

scene->removeChild(sprite);//removeChild(sprite, false) and removeChild(sprite, true) all tried    

scene->addChild(sprite);

将不会看到精灵。发生了什么事?

2 个答案:

答案 0 :(得分:8)

您的孩子在离开现场后似乎只是被摧毁了。在cocos2d-x中有一个类似于Objective-c的引用计数系统,它会在从父级中删除之后减少该精灵的引用计数。如果计数器达到0值,节点将被销毁。在调用scene->addChild(sprite);

之前,请确保您的精灵不为空
sprite->retain();
scene->removeChild(sprite);
scene->addChild(sprite);
sprite->release();

每当你自己打电话给retain时,你必须在它之后调用释放以防止泄漏。

答案 1 :(得分:2)

删除精灵后需要保留,再次添加后需要释放。

sprite->retain();   
scene->removeChild(sprite);
scene->addChild(sprite);
sprite->release();