2012-04-03 61 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