需要帮助理解cocos2d的精灵动画?

时间:2011-07-11 19:57:48

标签: cocos2d-iphone

我在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];

我不需要清楚了解CCSpriteBatchNode为什么在这里使用它?

1 个答案:

答案 0 :(得分:3)

您不需要将CCSpriteBatchNode用于单个动画。

如果要显示从同一精灵表中获取的许多对象,则使用CCSpriteBatchNode。在这种情况下,渲染东西比渲染单个精灵要快得多。 只要您使用单个精灵,就不会加速,因为动画中的精灵会显示在不同的帧中。