0

我是 cocos2d 和 Objective C 的新手,迈出了第一步,遇到了我无法解决的问题。我有 2 个场景,第一次加载一些文件,加载后我想切换到主场景,但根本不能这样做。我已经制作了加载元素的进度条,我想在加载完成后进入下一个场景。但它不会取代场景而只是退出应用程序。这是 PreloaderScene 的部分代码:

    +(id) scene
{
    CCScene *scene = [CCScene node];
    CCLayer* layer = [PreloaderScene node];
    [scene addChild:layer];
    return scene;
}

- (id) init
{
        if ((self = [super init]))
        {


            int n=5;

            CCLabelTTF *label = [CCLabelTTF labelWithString:@"Loading..." fontName:@"Marker Felt" fontSize:64];
            CGSize size = [[CCDirector sharedDirector] winSize];
            label.position =  ccp( size.width /2 , size.height/2 );
            [self addChild: label];

            CCSprite *Bar = [CCSprite spriteWithFile:@"200x30.png"];
            Bar.position = ccp(size.width /2 , size.height/2-70);
            [self addChild:Bar];
            CCSprite *Progress = [CCSprite spriteWithFile:@"2x30.png"];
            Progress.position = ccp (size.width/2-100+1, size.height/2-70);
            [self addChild:Progress];

            ResourceManager *Resource = [[ResourceManager alloc] init];
            for (int i=1;i<=n;i++)
            {
                NSString *imageName =[NSString stringWithFormat:@"image%d.png",i];
                [Resource LoadImage:imageName];

                [Progress runAction:[CCMoveTo actionWithDuration:1 position:ccp (size.width/2-100+i/n*100, size.height/2-70)]];
                [Progress runAction:[CCScaleBy actionWithDuration:1 scaleX:i/n*100 scaleY:1]];
            }
            [[CCDirector sharedDirector] replaceScene:MainScene];   
        }
        return self;

}
4

2 回答 2

0

我看不到您在哪里创建 MainScene 以便能够将其用于替换。这可能是问题吗?也许你需要像下面这样创建它

 MainScene *scene = [MainScene node];
[[CCDirector sharedDirector] replaceScene:scene];

您需要实际创建主场景才能使用它。

于 2011-07-18T07:55:41.370 回答
0

我也是 Cocos2D 的新手,但据我所知,我为你找到了答案

  1. 一个原因是您Main Scene在使用它之前没有创建
  2. 您不能replaceScene在另一个场景的 init 方法中调用 with。这将导致 CCDirector 崩溃....
于 2011-12-14T08:02:27.510 回答