2011-07-11 23 views
1

私はこれがここで使用されている理由CCSpriteBatchNodeについての明確なアイデアを取得する必要はありませんcocos2dは、cocos2dのスプライトアニメーションの理解を助ける必要がありますか?

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

    CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode 
             batchNodeWithFile:@"AnimBear.png"]; 
    [self addChild:spriteSheet]; 
    NSMutableArray *walkAnimFrames = [NSMutableArray array]; 
    for(int i = 1; i <= 8; ++i) { 
     [walkAnimFrames addObject: 
     [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: 
      [NSString stringWithFormat:@"bear%d.png", i]]]; 
    } 

    CCAnimation *walkAnim = [CCAnimation 
          animationWithFrames:walkAnimFrames delay:0.1f]; 

    CGSize winSize = [CCDirector sharedDirector].winSize; 
    self.bear = [CCSprite spriteWithSpriteFrameName:@"bear1.png"];   
    _bear.position = ccp(winSize.width/2, winSize.height/2); 
    self.walkAction = [CCRepeatForever actionWithAction: 
         [CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]]; 
    [_bear runAction:_walkAction]; 
    [spriteSheet addChild:_bear]; 

にスプライトアニメーションのために次のコードを使用していますか?

答えて

3

単一のアニメーションにCCSpriteBatchNodeを使用する必要はありません。

CCスプライトバッチノードは、同じスプライトシートから取得した多くのオブジェクトを表示する場合に使用します。この場合、個々のスプライトをレンダリングするよりもはるかに高速です。 1つのスプライトを使用している限り、アニメーションのスプライトは別々のフレームに表示されるため、スピードアップはありません。

関連する問題