0

私は cocos2d の初心者ですが、Objective-C と iphoneSdk の経験があります。しかし、アプリケーションに問題があり、エラーの原因がわかりません..

プレーヤーに小さなアニメーションを表示する CCLayer (アニメ) があります。その後、別の CCLayer (レベル) を開始します。

アニメ:

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

レベル I では、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

なぜこれが起こるのか??

ありがとう

4

2 に答える 2

1

Anime.plist と Level3.plist からスプライト フレームをロードしています。

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

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

この警告は、同じ名前のスプライト フレームを追加しようとしていることを示しています。

WARNING: an alias with name Man12.png already exists

これを解決するには、次の 3 つのオプションがあります。

  1. 2 つの異なるテクスチャ アトラスで同じスプライト フレーム名 (同じ画像) を使用しないようにしてください。
  2. 別のテクスチャ アトラスからスプライト フレームをロードする前に、不要なスプライト フレームをキャッシュからアンロードします。
  3. 警告を無視する
于 2012-04-04T10:00:09.383 に答える
1

この行に引用符がありません:

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

@の前後の開始引用符である必要がありますMan%i

于 2012-04-04T01:35:22.990 に答える