Cocos2d场景切换和替换问题

时间:2013-08-25 11:06:40

标签: iphone ios objective-c cocos2d-iphone

我正在制作一个具有多个级别的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

如果我在一个关卡上播放并返回主菜单并切换到另一个级别,也会发生同样的崩溃。

如果有人能帮助我,我会很高兴。甚至找到坠机的来源。

1 个答案:

答案 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];

如果有效,请告诉我。