Заменить сцену после завершения загрузки - PullRequest
0 голосов
/ 17 июля 2011

Я новичок в cocos2d и Objective C, делаю первые шаги и имею проблему, которую не могу преодолеть.У меня есть 2 сцены, 1-я загрузка некоторых файлов, затем после загрузки я хочу переключиться на основную сцену, но не могу этого сделать вообще.Я сделал индикатор загрузки элементов и хочу перейти к следующей сцене после завершения загрузки.Но это не заменяет сцену и просто выходит из приложения.Вот код части 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;

}

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

я также новичок в Cocos2D, но, насколько мне известно, я нашел для вас ответы

  1. одна из причин, по которой вы не создали Main Scene, прежде чем использовать его
  2. , вы можете 'Вызовите replaceScene с помощью метода init другой Scene. Это приведет к сбою CCDirector ....
0 голосов
/ 18 июля 2011

Я не вижу, где вы создаете MainScene, чтобы иметь возможность использовать его для замены. Может ли это быть проблемой? Может быть, вам нужно создать его следующим образом

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

Вам нужно создать главную сцену, прежде чем вы сможете ее использовать.

...