0

複数のアニメーションを実行しようとしました 1.プレーヤーは画面の読み込み時に立ちます 2.次に、フレームが終了すると走り始めます 3.プレーヤーが停止し、Go アクションが実行されます

問題は、実行アクションが終了する前に go アクションが実行されることです

プレーヤーが 0.6 秒実行すると、実行中のアクションが停止し、Go アクションが実行され、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]];
}
4

1 に答える 1

0

コード アニメーションから opticity 行を削除し、表示を開始しました。アニメーションのシーケンスを変更し、正常に動作するようになりました。

(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];
}
于 2014-06-17T05:55:15.540 に答える