2012-04-03 44 views
0

我是cocos2d的初學者,但我在Objective-C和iphoneSdk方面有一些經驗。 但我在我的應用程序中有一個問題,我找不出什麼錯誤。我有一個CCLayer(動畫) :錯誤更改CCScene

動漫:

-(id) init{ 

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

CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
[frameCache addSpriteFramesWithFile:@"Anime.plist"]; 



CCSprite * backgound = [CCSprite spriteWithSpriteFrameName:@"Back.png"]; 
backgound.anchorPoint=ccp(0,0); 
[self addChild:backgound z:-1]; 


CCSprite *body = [CCSprite spriteWithSpriteFrameName:@"Body1.png"]; 
[self addChild:body z:0]; 

CCSprite *bMoved = [CCSprite spriteWithSpriteFrameName:@"Gigante1.png"]; 
[self addChild:bMoved z:1];  


NSMutableArray *nuvemAnim = [[NSMutableArray alloc] init]; 
     for (int i = 1; i < 41; i++) { 
      NSString *frameNames = [NSString stringWithFormat:@"Gigante%i.png",i]; 
      [nuvemAnim addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] 
            spriteFrameByName:frameNames]]; 

     }  


     CCAnimation *gigAnim = [CCAnimation animationWithFrames:nuvemAnim delay:1.0f/24.0f]; 
     CCAnimate* animate = [CCAnimate actionWithAnimation:gigAnim]; 


     [bMoved runAction:[CCSequence actions: 
         [CCDelayTime actionWithDuration:1], 
         animate, 
         [CCDelayTime actionWithDuration:1], 
         [CCCallFunc actionWithTarget:self selector:@selector(changeCCScene)], 
          nil]]; 


    } 
return self; 

在第一級使用CCSpriteFrameCache創建人物的動畫,

等級:

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

    self.isTouchEnabled=YES; 


    CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
    [frameCache addSpriteFramesWithFile:@"Level3.plist"]; 

    CCSprite * backgound = [CCSprite spriteWithSpriteFrameName:@"Fundo9.png"]; 
    backgound.anchorPoint=ccp(0,0); 
    [self addChild:backgound z:-1]; 


    CCSprite man = [CCSprite spriteWithSpriteFrameName:@"Man1.png"]; 
    [self man z:0]; 


    eAnim = [[NSMutableArray alloc] init]; 
    for (int i = 2; i < 178; i++) { 
     NSString *frameNames = [NSString stringWithFormat:@Man%i.png",i]; 
     [eAnim addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] 
           spriteFrameByName:frameNames]]; 

    } 

,但給我的控制檯這種類型的錯誤無限的所有幀

2012-04-03 23:37:51.987 GigV1[1432:10a03] cocos2d: WARNING: an alias with name Man12.png already exists 
2012-04-03 23:37:51.988 GigV1[1432:10a03] cocos2d: WARNING: an alias with name Man155.png already exists 

任何ideai爲什麼出現這種情況?

感謝

回答

1

。 plist和Level3.plist:

CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
[frameCache addSpriteFramesWithFile:@"Anime.plist"]; 

[frameCache addSpriteFramesWithFile:@"Level3.plist"]; 

此警告表明您正在使用相同的名稱添加更多的精靈幀:

WARNING: an alias with name Man12.png already exists 

要解決這一點,你有三種選擇:

  1. 確保你沒有使用相同的前景幀兩個不同的紋理地圖集中的名稱(相同的圖像)
  2. 從加載其他紋理地圖集中的精靈幀之前,從緩存中卸載精靈幀
  3. 忽略警告
+0

我可以解決我的問題...我使用Level的方法「OnEnter#是創建另一類本身,所以連續的錯誤.. 謝謝 – DaSilva 2012-04-04 22:34:36

1

你缺少引號在這一行:

NSString *frameNames = [NSString stringWithFormat:@Man%i.png",i];

應該是@後開引號,你是從動漫加載精靈幀之前Man%i

+0

這是一個錯誤在「複製」代碼...對不起..但是,無論如何.. – DaSilva 2012-04-04 22:35:48