0

SpriteSheetsは、頭を動かすことができないものの1つです。私はそれらについて学ぶための非常に明確でわかりやすい方法を探しています。私はそれらを読んで研究しましたが、まだ問題があります。

コードが機能しない理由がわかりません。

-(void) addPlayer {

CGSize winSize = [[CCDirector sharedDirector] winSize];

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"walk1.png"];
sprite.position = ccp(winSize.width/2, winSize.height/2);

CCSpriteBatchNode *batchNode = [CCSpriteBatchNode batchNodeWithFile:@"player-walk.png"];
[batchNode addChild:sprite];
[self addChild:batchNode z:350];






NSMutableArray *frames = [NSMutableArray array];
for(int i = 1; i <= 4; ++i) {
    [frames addObject:
     [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"walk%d.png", i]]];
}

CCAnimation *anim = [CCAnimation animation];

CCAnimate *animate = [CCAnimate actionWithAnimation:anim];
CCRepeatForever *repeat = [CCRepeatForever actionWithAction:animate];
[self runAction:repeat];
}

プレーヤーがアニメーション化されないのはなぜですか?

4

1 に答える 1

1

スプライト シートは、テクスチャを格納するための便利な方法です。

CCAnimation オブジェクトにフレームがありません。フレームの配列を収集しますが、それを使用することはありません。あなたの

CCAnimation *anim = [CCAnimation animation];

への行

CCAnimation *anim = [CCAnimation animationWithFrames:frames delay:0.2f];

スプライトをアニメーション化する場合は、このスプライトでアニメーション アクションを実行する必要があります。[sprite runAction:repeat]の代わりに使用し[self runAction:repeat];ます。

于 2012-08-29T13:50:22.403 に答える