нужна помощь в понимании спрайтовой анимации для cocos2d? - PullRequest
1 голос
/ 11 июля 2011

Я использую следующий код для спрайтовой анимации в 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 Ответ

3 голосов
/ 23 июля 2011

Вам не нужно использовать CCSpriteBatchNode для одной анимации.

CCSpriteBatchNode используется, когда вы хотите отобразить много объектов, взятых из одного листа спрайта.В этом случае рендеринг выполняется намного быстрее, чем рендеринг отдельных спрайтов.Пока вы используете один спрайт, ускорение не происходит, поскольку спрайты в анимации отображаются в отдельных кадрах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...