我正在制作一个具有多个级别的cocos2d box2d游戏。我正在用CCParticleSystem模拟一个粉碎效果。我在每个级别都有一个重播按钮。问题是我的iPod touch(4代)它崩溃了时间我按一个级别上的重播按钮。 我的重播解决方案如下:
CCMenuItemImage *replay = [CCMenuItemImage itemWithNormalImage:@"replaybutton.png" selectedImage:@"replaybutton_pushed.png" block:^(id){
NSLog(@"*** REPLAY BUTTON PRESSED ***");
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:0.5f scene:[[self class] node]]];
}];
iOS模拟器没有崩溃但我的真实设备没有崩溃。 我无法调试,因为Xcode无法识别任何错误,例如“EXC_BAD_ACCESS”。 我唯一注意到的是日志中的OpenGl错误:
OpenGL error 0x0501 in -[CCParticleSystemQuad postStep] 411
如果我在一个关卡上播放并返回主菜单并切换到另一个级别,也会发生同样的崩溃。
如果有人能帮助我,我会很高兴。甚至找到坠机的来源。
答案 0 :(得分:0)
我猜问题就在于此 [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:0.5f scene:[[self class] node]]];
特别是在场景中:[[self class] node]]。
你看到当我们调用替换场景时,现有的场景被破坏了,这意味着它被解除了所有这一切。现在,当你试图放回这个解除暴露的场景时,你会崩溃,因为它作为一个动画运行,你甚至无法追溯它。
您可以做或至少尝试的是创建此场景的新实例,然后调用
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:0.5f scene:newSceneInstanceOfTheSameClassYouJustCreated];
如果有效,请告诉我。