анимация cocos2d продолжает падать - PullRequest
1 голос
/ 09 марта 2012

Я действительно новичок в программировании на cocos2d и oc, и я пытался понять, как работает спрайтовая анимация.Из-за последнего обновления я получаю много старого кода, который больше не работает.

У меня есть следующее (спрайт-лист с 3 спрайтами, которые я хочу анимировать)

как-то сохраняетсбой

это в моем методе инициализации

[[CCSpriteFrameCache sharedSpriteFrameCache ] addSpriteFramesWithFile:@"eno_glasses.plist" ];
        CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"eno_glasses.png"];
        [self addChild:spriteSheet];

        _body = [CCSprite spriteWithSpriteFrameName: [NSString stringWithFormat:@"eno_glasses02.png"]];        
        [spriteSheet addChild:_body];
        _body.position = CGPointMake(screenSize.width / 2, screenSize.height / 2);



        NSMutableArray *animFrames = [NSMutableArray array];
        for(int i = 1; i < 3; i++) {
            CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"eno_glasses0%d.png",i]];
            [animFrames addObject:frame];
        }
        CCAnimation *animation = [CCAnimation animationWithFrames:animFrames delay:0.03f];
        CCAnimate* anime = [CCAnimate actionWithAnimation:animation];
        [self runAction:anime];  

Я знаю, что изображения могут быть найдены, потому что это работает (и я могу получить изображения из списка 01,02,03)

я забыл где-нибудь ноль?

 [[CCSpriteFrameCache sharedSpriteFrameCache ] addSpriteFramesWithFile:@"eno_glasses.plist" ];
        CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"eno_glasses.png"];
        [self addChild:spriteSheet];

        _body = [CCSprite spriteWithSpriteFrameName: [NSString stringWithFormat:@"eno_glasses02.png"]];        
        [spriteSheet addChild:_body];
        _body.position = CGPointMake(screenSize.width / 2, screenSize.height / 2);

1 Ответ

2 голосов
/ 09 марта 2012

использование:

[_body runAction:anime];

как для повторения (при условии, один раз)

id anime1=[CCAnimate actionWithAnimation:animation];
id delay=[CCDelayTime actionWithDuration:2.0f];
id anime2=[CCAnimate actionWithAnimation:animation];
id twice = [CCSequence actions:anime1,delay,anime2,nil];
[_body runAction:twice];

также вы можете выбрать "eno_glasses01.png" в качестве стартового кадра.

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