我有一个使用精灵表的应用程序,它是一个 Cocos2D/UIKit 应用程序。在我的场景的 init 方法中,我这样做:
spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"TheSpriteSheet.pvr.ccz"];
[self addChild:spriteSheet z:1];
现在当游戏结束时,我这样做:
[[[CCDirector sharedDirector] actionManager] removeAllActions];
[self unscheduleAllSelectors];
这会导致当前仍作为孩子的 CCSprite 保留在那里,所以一旦我完成 UIKit 视图转换到我的另一个UIViewController
我尝试在我CCLayer
的类(场景所在的类)中调用一个方法来删除所有的孩子在我CCSpriteBatchNode
的 中,应用程序与EXC_BAD_ACCESS
.
现在我必须在此时调用该方法,因为我想在我进行自定义视图转换时实现敌人仍在屏幕上的效果,这样它们就不会在我完成切换视图之前神奇地消失。此外,我不会在任何地方进行 replaceScene 或明确释放我的批处理节点,所以我不知道为什么会发生这种情况。
无论如何,我将如何解决这个问题?
谢谢!