2012-03-28 4 views
0

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

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

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

ответ

0
[[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] ]]; 
+0

Или Следуйте этому URl http://www.raywenderlich.com/1271/how-to-use-animations-and-sprite-sheets-in-cocos2d – Anand

1

Это довольно загруженный вопрос о том, чтобы быть новым для 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]]]; 

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

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

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

[mySprite pauseSchedulerAndActions]; 
[mySprite resumeSchedulerAndActions]; 

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

mySprite.flipX = YES; 
mySprite.flipX = NO; 
+0

эй, классное решение :) он работает, за исключением того, что запуск и приостановка действия в init не приостановил действие моего спрайта - на В прикосновениях методы паузы и возобновления, похоже, работают ... любая идея? – raistlin