Cocos2d 如何切换场景

Posted

技术标签:

【中文标题】Cocos2d 如何切换场景【英文标题】:Cocos2d How to Switch Scenes 【发布时间】:2013-05-19 18:38:30 【问题描述】:

如何在 cocos2d 中切换场景?我有我的主要课程 "HellowWorldLayer.h/.m" ,但我似乎无法正确切换场景。我试过了:

[[CCDirector sharedDirector] replaceScene:[Race node]];
//And
[[CCDirector sharedDirector] replaceScene:[Race Scene]];

我设置了一个断点,我可以看到它正在进入新场景,但是我添加到新场景中的按钮没有出现。我正在正确创建按钮。然后我将它添加到新场景中的屏幕上,如下所示:

 [self addChild:Menu];

我刚刚从 HolloWorldLayer.m/.h 中获取了所有代码并将其复制到新场景(类)中,但我无法正确过渡。我是 xcode 和 cocos2d 的新手,如果这真的很简单,我很抱歉。

种族.m

#import "Race.h"
#import "Intermediary.h"

@implementation Race


+(CCScene *) scene
    // 'scene' is an autorelease object.
    CCScene *scene = [CCScene node];

    // 'layer' is an autorelease object.
    Race *layer = [Race node];

    // add layer as a child to scene
    [scene addChild: layer];

    // return the scene
    return scene;


-(id) init

    if( (self=[super init]) ) 

        NSLog(@"Racing!");
        CCLabelTTF *startLbl = [CCLabelTTF labelWithString:@"Start" fontName:@"Marker Felt" fontSize:20];
        CCMenuItemLabel *startMenu = [CCMenuItemLabel itemWithLabel:startLbl block:^(id sender) 
            NSLog(@"I have been pushed!");
        ];
        startMenu.position = ccp(50,50);
        CCMenu *Menu = [CCMenu menuWithItems:startMenu, nil];
        [self addChild:Menu];


    
    return self;



@end

【问题讨论】:

【参考方案1】:

您的代码对我有用。

这里是示例:Download

使用过渡效果更好。

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[Race scene] ]];

【讨论】:

感谢您的回复!我从 HelloWorldLayer 复制了场景代码,然后将这两个名称更改为我的类名。按钮仍然没有出现。 好的,给我看有问题的菜单初始化代码...确保放置图像 我想这就是你的意思。 所以它不起作用然后我把它放在一个按钮中,它现在起作用了!非常感谢。

以上是关于Cocos2d 如何切换场景的主要内容,如果未能解决你的问题,请参考以下文章

cocos2d第二次打开后无响应的场景

cocos2d 1.0 beta 两个场景之间的过渡和程序刚刚退出?

cocos2D替换场景未初始化类

如何从正在运行的(uiviewcontroller)应用程序启动 cocos2d 场景

如何以图形方式开发一些 ViewController,然后从 Cocos2d Iphone 2 场景中调用它们?

从 Cocos2d 场景推送 ViewController