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

scene->addChild(sprite);

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

4

2 回答 2

8

似乎您的孩子在被从现场移走后被简单地摧毁了。在 cocos2d-x 中有一个类似objective-c 的引用计数系统,它会在从父精灵中移除后减少该精灵的引用计数。如果计数器达到0值,节点将被销毁。在调用之前确保您的精灵不为空scene->addChild(sprite);

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

每次你retain自己调用时,你必须在它之后调用release,以防止泄漏。

于 2013-09-24T12:52:32.880 回答
2

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

sprite->retain();   
scene->removeChild(sprite);
scene->addChild(sprite);
sprite->release();
于 2013-09-24T14:58:10.820 回答