我想知道在cocos2d中重启当前场景的正确方法是什么,因为我无法正常工作。我使用以下代码重新启动实际场景,但只出现黑屏......
CCScene *currentScene = [CCDirector sharedDirector].runningScene;
CCScene *newScene = [[[currentScene class] alloc] init];
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:0.7f scene:newScene]];
注意:我不知道这是否与事实(我猜不是)有关,这个代码是从负责管理暂停菜单和东西的CClayer子类运行的。
注2:这是一个通用的重新开始,我假装它适用于每个场景,所以我 谢谢!
答案 0 :(得分:2)
对于遇到同样问题的其他人来说,这是我发现克服这个问题的方式:
Class SceneClass = NSClassFromString(nameOfClass);
[[CCDirector sharedDirector]replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[SceneClass scene]]];
其中nameOfClass是一个字符串,其中包含实现要重新启动的场景的类的名称。这种方式就像一个魅力,你甚至不必#import .h文件。
答案 1 :(得分:1)
我认为它与手动分配有关。在大多数情况下,最好调用cocos2d静态构造函数,并让它为您处理内存管理。这就是我所做的.-
MyClassScene *newScene = [MyClassScene node];
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:kTransitionTime scene:newScene withColor:ccc3(255, 255, 255)]];
希望它有所帮助。
答案 2 :(得分:0)
试试这个:
CCScene *currentScene = [[CCDirector sharedDirector] runningScene];
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:0.7f scene:[currentScene node]]];