2011-07-17 1 views
0

Je suis novice en cocos2d et en Objective C, je fais quelques premiers pas et j'ai un problème que je ne peux pas battre. J'ai 2 scènes, le premier chargement de certains fichiers, qu'après le chargement, je veux passer à la scène principale, mais je ne peux pas le faire du tout. J'ai créé une barre de progression des éléments de chargement, et je veux passer à la scène suivante après le chargement complet. Mais il ne remplace pas la scène et quitte l'application. Voici le code partie de PreloaderScene:Remplacer la scène après le chargement terminé

+(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; 

} 

Répondre

0

Je ne vois pas où vous créez le MainScene de pouvoir l'utiliser pour le remplacement. Cela pourrait-il être le problème? Peut-être que vous avez besoin de le créer comme suit

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

Vous devez créer réellement le mainscene avant de pouvoir l'utiliser.

0

Je suis aussi nouveau pour Cocos2D mais comme ma connaissance j'ai trouvé des réponses pour vous

  1. une des raisons est votre pas créer Main Scene avant que vous l'utilisez
  2. vous ne pouvez pas appeler replaceScene avec dans init méthode d'une autre scène.Cela causera CCDirector de se bloquer ....
Questions connexes