0

我想知道在 cocos2d 中重新启动当前场景的正确方法是什么,因为我无法让它正常工作。我正在使用以下代码重新启动实际场景,但只出现黑屏....

CCScene *currentScene = [CCDirector sharedDirector].runningScene;
CCScene *newScene = [[[currentScene class] alloc] init];

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:0.7f scene:newScene]];

注意:我不知道这是否与(我猜不是)此代码是从负责管理暂停菜单和其他内容的 CClayer 子类运行的事实有关。

注意2:这是一个通用的重新启动,我假装它适用于每个场景,所以我谢谢!

4

3 回答 3

2

对于遇到同样问题的其他人,这是我发现的解决问题的方法:

    Class SceneClass = NSClassFromString(nameOfClass);
[[CCDirector sharedDirector]replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[SceneClass scene]]];

其中nameOfClass是一个字符串,其中包含实现场景重启的类名。这种方式就像一个魅力,你甚至不必#import .h 文件。

于 2013-05-02T18:52:57.653 回答
1

我想这与手动分配有关。在大多数情况下,最好调用 cocos2d 的静态构造函数,让它为你处理内存管理。这就是我所做的。-

MyClassScene *newScene = [MyClassScene node];
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:kTransitionTime scene:newScene withColor:ccc3(255, 255, 255)]];

希望能帮助到你。

于 2013-04-15T01:01:57.013 回答
0

尝试这个:

CCScene *currentScene = [[CCDirector sharedDirector] runningScene];

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:0.7f scene:[currentScene node]]];
于 2013-04-16T23:58:09.633 回答