Cocos2D анимация спрайт - PullRequest
       6

Cocos2D анимация спрайт

0 голосов
/ 28 марта 2012

Привет, я делаю игру для iphone, и когда спрайт перемещается, я хочу, чтобы он менял изображение между 3 изображениями, чтобы оно выглядело как запущенное.Я использую cocos2d прямо сейчас, и я довольно новичок в cocos2d.Я знаю, как сделать это с какао, но это не работает с cocos2d.

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

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Это довольно загруженный вопрос для новичка в cocos2d.

Сначала я бы поработал над бесконечной анимацией. Начните работать, а затем работайте над приостановкой, возобновлением и переключением анимации.

Вы можете настроить анимацию тем же способом, которым вы добавляете спрайт.

NSMutableArray *animFrames = [NSMutableArray array];
    for(int i = 1; i <= 3; i++) {
        CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"Sprite-%d.png",i]];
        [animFrames addObject:frame];
    }
    CCAnimation *animation = [CCAnimation animationWithName:@"run" delay:0.1f frames:animFrames];
    [mySprite runAction:[CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:animation restoreOriginalFrame:NO]]];

Если вы не знакомы со спрайт-листами, есть много бесплатных ресурсов для создания спрайт-листов и списков ( TexturePacker имеет приятный интерфейс)

Если у вас возникли проблемы с тем, чтобы заставить это работать, у Рэя Вендерлиха есть хорошие учебники. Если вы заходите так далеко, вот несколько указателей для приостановки, возобновления и переключения анимации

Для приостановки или возобновления

[mySprite pauseSchedulerAndActions];
[mySprite resumeSchedulerAndActions];

Переворачивать анимацию всякий раз, когда направления касания переключают горизонтальные направления

mySprite.flipX = YES; 
mySprite.flipX = NO;
0 голосов
/ 28 марта 2012
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"animations/grossini.plist"];

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"grossini_dance_01.png"];
sprite.position = ccp( 100, 100);

CCSpriteSheet *spritesheet = [CCSpriteSheet spriteSheetWithFile:@"animations/grossini.png"];
[spritesheet addChild:sprite];
[self addChild:spritesheet];

NSMutableArray *animFrames = [NSMutableArray array];
for(int i = 1; i < 15; i++) {

    CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"grossini_dance_%02d.png",i]];
    [animFrames addObject:frame];
}

CCAnimation *animation = [CCAnimation animationWithName:@"dance" frames:animFrames];
// 14 frames * 0.2sec = 2,8 seconds
[sprite runAction:[CCRepeatForever actionWithAction: [CCAnimate actionWithDuration:2.8f animation:animation restoreOriginalFrame:NO] ]];
...