0

このチュートリアルによると、 PVR画像はiOSスプライトに最適な形式のようです。ただし、Texturepackerを使用してスプライトシートを作成し、この形式にエクスポートした後、アニメーションをcocos2dで動作させることができません。ここのドキュメントによると、私は使用する必要があります

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"LuckyCompiled.plist"];

ただし、チュートリアルもドキュメントも、これを除いて、アニメーションの実行方法を説明していません。以下のコードはこれに基づいています。ただし、これはベースイメージをレイヤーに配置するだけで、アニメーション化はしません。

CCSprite *sprite = [[CCSprite alloc]init];
    sprite.position = ccp(player.contentSize.width/2+40, winSize.height/2+40);
    // Obtain the shared instance of the cache
    CCSpriteFrameCache *cache = [CCSpriteFrameCache sharedSpriteFrameCache];

   // load the frames
   [cache addSpriteFramesWithFile:@"LuckyCompiled.plist"];

   // It loads the frame named "frame1.png".
    // IMPORTANT: It doesn't load the image "frame1.png". "frama1.png" is a just the name of the frame
    CCSpriteFrame *frame = [cache spriteFrameByName:@"lucky1.png"];
                                 [sprite setDisplayFrame:frame];
    [self addChild:sprite];

    NSMutableArray *animFrames = [NSMutableArray array];
        for(int i = 1; i < 10; i++) {

    CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"lucky%d.png",i]];
            [animFrames addObject:frame];
        }
    NSLog(@"animaframes %@",animFrames);
        CCAnimation *animation = [CCAnimation animationWithSpriteFrames:[NSArray arrayWithArray:animFrames]];

    [sprite runAction:[CCAnimate actionWithAnimation:animation]];

答え:

遅延が必要でした。そうしないと、アニメーションが目立たなくなりました。

[CCAnimation animationWithSpriteFrames:[NSArray arrayWithArray:animFrames]];

すべきだった(また、nsarrayを作成する必要はなく、可変は問題ありません)

[CCAnimation animationWithSpriteFrames:frames delay:0.1f];
4

1 に答える 1

3

これが私が試したコードです、それはうまくいきます。

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

        player = [CCSprite spriteWithSpriteFrameName:@"f1.png"];
        NSMutableArray *frames = [NSMutableArray arrayWithCapacity:8];
        for (int i = 1; i < 9; i++) {
            NSString *file = [NSString stringWithFormat:@"f%d.png", i];
            CCSpriteFrame *frame = [frameCache spriteFrameByName:file];
            [frames addObject:frame];
        }
        CCAnimation *walkAnim =[CCAnimation animationWithSpriteFrames:frames delay:0.1f];
        CCAnimate *animate = [CCAnimate actionWithAnimation:walkAnim];
        CCRepeatForever *rep = [CCRepeatForever actionWithAction:animate];
        player.position = ccp(23, 285);
        [player runAction:rep];

        [self addChild:player];
于 2012-07-20T18:30:20.540 に答える