このチュートリアルによると、 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];