2014-06-16 44 views
0

我試圖運行多個動畫1.Player會站在屏幕裝載2.然後,他開始運行時,他的幀完成3.Player會走走停停的行動進行多個動畫的cocos2d 3.0

問題是去行動運行動作之前執行完畢

任何一個可以幫助我來執行這項任務就像運動員跑0.6秒,然後他停止運行操作,直接行動執行後4秒停止

- (void)didLoadFromCCB 
{ 
    CGSize winSize = [[CCDirector sharedDirector] viewSize]; 

    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"cc_player.plist"]; 

    NSMutableArray *runAnimFrames = [NSMutableArray array]; 
    for(int i = 0; i <= 12; i++) 
    { 
     [runAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [NSString stringWithFormat:@"cc_player/cc_player_run_pistol_%d.png", i]]]; 
    } 

    NSMutableArray *goAnimFrames = [NSMutableArray array]; 
    for(int i = 0; i <= 11; i++) 
    { 
     [goAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [NSString stringWithFormat:@"cc_player/cc_player_go_%d.png", i]]]; 
    } 

    CCSprite *playerSprite = [CCSprite spriteWithImageNamed:@"cc_player/cc_player_idle_0.png"]; 

    playerSprite.scale = 1.3; 
    playerSprite.position = CGPointMake(100, (winSize.height/2) - 60); 
    [self addChild:playerSprite z:3]; 

    CCActionMoveTo *moveTo = [CCActionMoveTo actionWithDuration:8 position:CGPointMake(winSize.width+100/2, playerSprite.position.y)]; 


    CCAnimation *runAnim = [CCAnimation animationWithSpriteFrames:runAnimFrames delay:0.06]; 

    CCAnimation *goAnim = [CCAnimation animationWithSpriteFrames:goAnimFrames delay:0.06]; 

    CCActionAnimate *runAnimationAction = [CCActionAnimate actionWithAnimation:runAnim]; 

    CCActionAnimate *goAnimationAction = [CCActionAnimate actionWithAnimation:goAnim]; 




    CCActionCallBlock *next=[CCActionCallBlock actionWithBlock:^ 
    { 
     playerSprite.position = CGPointMake(playerSprite.position.x - 8, playerSprite.position.y + 6); 
     id goAction = [CCActionRepeat actionWithAction:goAnimationAction times:1]; 

     CCActionCallBlock *nextStep=[CCActionCallBlock actionWithBlock:^ 
     { 
      NSLog(@"***********not done"); 
      // [playerSprite stopAllActions]; 

     }]; 

     CCActionSpawn *groupAction1 = [CCActionSpawn actionWithArray:@[goAction,nextStep]]; 

     CCActionSequence *sequence2 = [CCActionSequence actionWithArray:@[groupAction1]]; 

     // [playerSprite stopAllActions]; 
     //CCActionSequence *goSequence = [CCActionSequence actions:moveTo,repeatingAnimation, nil]; 
     [playerSprite runAction:sequence2]; 

    }]; 


    CCActionSpawn *groupAction = [CCActionSpawn actionWithArray:@[moveTo, next]]; 

    CCActionSequence *sequence = [CCActionSequence actionWithArray:@[groupAction]]; 

    [playerSprite runAction:sequence]; 


    [playerSprite runAction:[CCActionRepeatForever actionWithAction:runAnimationAction]]; 
} 
+0

爲什麼你不創建這個動畫作爲spritebuilder時間軸的任何原因? – LearnCocos2D

+0

它現在工作,我在這裏分享代碼在這裏。我用這種方式,因爲以後我可以重複使用我的運行動畫或獨立進行動畫。 – Ame

+0

對不起,我現在可以發佈它,因爲我的聲望是8我會在8小時的等待時間後做 – Ame

回答

0

我已刪除opticity線從代碼動畫開始showi現在我已經改變了我的動畫sequance和它現在的工作不錯

(void)didLoadFromCCB 
{ 
CGSize winSize = [[CCDirector sharedDirector] viewSize]; 

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"cc_player.plist"]; 

NSMutableArray *runAnimFrames = [NSMutableArray array]; 
for(int i = 0; i <= 12; i++) 
{ 
    [runAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [NSString stringWithFormat:@"cc_player/cc_player_run_pistol_%d.png", i]]]; 
} 

NSMutableArray *goAnimFrames = [NSMutableArray array]; 
for(int i = 0; i <= 11; i++) 
{ 
    [goAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [NSString stringWithFormat:@"cc_player/cc_player_go_%d.png", i]]]; 
} 

CCSprite *playerSprite = [CCSprite spriteWithImageNamed:@"cc_player/cc_player_idle_0.png"]; 

playerSprite.scale = 1.3; 
playerSprite.position = CGPointMake(100, (winSize.height/2) - 60); 
[self addChild:playerSprite z:3]; 

CCActionMoveTo *moveTo = [CCActionMoveTo actionWithDuration:3 position:CGPointMake(300, playerSprite.position.y)]; 


CCAnimation *runAnim = [CCAnimation animationWithSpriteFrames:runAnimFrames delay:0.06]; 

CCAnimation *goAnim = [CCAnimation animationWithSpriteFrames:goAnimFrames delay:0.06]; 

CCActionAnimate *runAnimationAction = [CCActionAnimate actionWithAnimation:runAnim]; 

CCActionAnimate *goAnimationAction = [CCActionAnimate actionWithAnimation:goAnim]; 




CCActionCallBlock *next=[CCActionCallBlock actionWithBlock:^ 
{ 
    playerSprite.position = CGPointMake(playerSprite.position.x - 8, playerSprite.position.y + 6); 
    id goAction = [CCActionRepeat actionWithAction:goAnimationAction times:1]; 

    CCActionCallBlock *nextStep=[CCActionCallBlock actionWithBlock:^ 
    { 

     // [playerSprite stopAllActions]; 

    }]; 

    CCActionSpawn *groupAction1 = [CCActionSpawn actionWithArray:@[goAction,nextStep]]; 

    CCActionSequence *sequence2 = [CCActionSequence actionWithArray:@[groupAction1]]; 

    // [playerSprite stopAllActions]; 
    //CCActionSequence *goSequence = [CCActionSequence actions:moveTo,repeatingAnimation, nil]; 
    [playerSprite runAction:sequence2]; 

}]; 

[playerSprite runAction:[CCActionRepeatForever actionWithAction:runAnimationAction]]; 

CCActionSpawn *groupAction = [CCActionSpawn actionWithArray:@[moveTo,runAnimationAction]]; 

CCActionSequence *sequence = [CCActionSequence actionWithArray:@[groupAction,next]]; 

[playerSprite runAction:sequence]; 
}