2013-05-28 5 views
-2

В моей игре я запускаю две анимации, используя CCSpawn, но она показывает только одну анимацию за раз. Что здесь не так? Вот мой код.Как запустить две анимации одновременно с тем же спрайтом?

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

NSMutableArray *runFrames = [NSMutableArray array]; 
for(int i = 1; i <= 11; ++i) { 
    CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"Run_Anim00%02d.png", i]]; 
    [runFrames addObject:frame]; 
} 
id runAnim = [CCAnimation animationWithFrames:runFrames delay:1.0/22.0]; 
id runAnimate = [CCAnimate actionWithAnimation:runAnim restoreOriginalFrame:NO]; 
// _runAction = [CCRepeatForever actionWithAction:runAnimate]; 
// [heroBodySprite runAction:_runAction]; 

NSMutableArray *poofFrames = [NSMutableArray array]; 
for(int i = 1; i <= 10; ++i) { 
    CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"Poof00%02d.png", i]]; 
    [poofFrames addObject:frame]; 
} 
id poofAnim = [CCAnimation animationWithFrames:poofFrames delay:1.0/20.0]; 
id poofAnimate = [CCAnimate actionWithAnimation:poofAnim restoreOriginalFrame:NO]; 
// id poofAction = [CCRepeatForever actionWithAction:poofAnimate]; 
// [heroBodySprite runAction:poofAction]; 

[heroBodySprite runAction:[CCRepeatForever actionWithAction:[CCSpawn actions:runAnimate, poofAnimate, nil]]]; 
+0

оба кадра будут пытаться заменить текстуру спрайта, так что может быть вы получаете анимацию для poofAnimate. – Renaissance

+0

да, вы получили это .... теперь, что я делаю ... – Gaurav

+0

см. Я не уверен, будет ли это работать или нет, но попытайтесь сделать один CCSequence, который будет иметь задержку и poofAnimate. Дела будет ((1/20) - (1/22)) и запускает это действие с CCspawn с runAnimate и (delay и poofAnimate). Я не понимаю, почему кто-то пытается анимировать один единственный спрайт с двумя разными объектами spriteframes? – Renaissance

ответ

0

Вы в основном хотите отображать два разных кадра одновременно на одном и том же спрайте. Это просто невозможно, подумайте об этом. Какую магию вы ожидаете от Cocos2d? Некоторые анимации просто не совместимы друг с другом. Это похоже на то, что вы попытались переместить спрайт влево и вправо в то же время и были удивлены, что это не сработало ...

+0

да ... я получил это ... что вы хотите сказать .. но что работает ccspawn – Gaurav

+0

CCSpawn позволяет одновременно запускать два или более CCActions. Например, вы можете использовать его для перемещения спрайта и вращения его одновременно. Или переместить его и запустить CCAnimation на нем. Но если вы попытаетесь создать две CCAnimations на одном и том же спрайте, кажется совершенно очевидным, что вы столкнетесь с проблемой ... – dqms

+0

Да, я получил благодарность за решение моей проблемы. – Gaurav

Смежные вопросы