2011-07-11 1 views
1

J'ai créé une animation commecomment suspendre et reprendre l'action appliquée au ccSprite?

 [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile: 
    @"Actor.plist"]; 
    spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"Actor.pvr.ccz"]; 
    [self addChild:spriteSheet]; 
    NSMutableArray *walkAnimFrames = [NSMutableArray array]; 
    for(int i = 1; i <= 8; ++i) { 
     [walkAnimFrames addObject: 
     [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: 
      [NSString stringWithFormat:@"clip000%d.png", i]]]; 
    } 
    CCAnimation *walkAnim = [CCAnimation 
          animationWithFrames:walkAnimFrames delay:0.07f]; 
    playWalkSound = [CCCallFuncN actionWithTarget:self selector:@selector(PlayRunningSound:)]; 

    walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]]; 
    [actor runAction:[CCSpawn actions:walkAction, nil]]; 

Je veux mettre en pause cette animation sur le cadre particulier et déclencheur particulier. puis reprenez l'animation après un déclenchement particulier.

J'ai essayé d'utiliser stopAction, puis de nouveau runAction. Mais ça cesse de fonctionner après quelques itérations. et j'ai besoin de refaire l'animation et l'action pour refaire cette animation.

J'ai essayé d'utiliser pauseSchedulerAndAction et resumeSchedulerandAction, mais le jeu est mis en pause et si j'essaie de déclencher une pause à nouveau sans reprendre les plantages.

Y at-il quelque chose qui va mettre en pause l'animation sur une trame particulière et reprendre à partir de la même image.

Répondre

1

Je résolu mon problème en créant une animation avec 1 cadre

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile: 
@"Actor.plist"]; 
spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"Actor.pvr.ccz"]; 
[self addChild:spriteSheet]; 
NSMutableArray *walkAnimFrames = [NSMutableArray array]; 
for(int i = 1; i <2; ++i) { 
    [walkAnimFrames addObject: 
    [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: 
     [NSString stringWithFormat:@"clip000%d.png", i]]]; 
} 
CCAnimation *walkAnim = [CCAnimation 
         animationWithFrames:walkAnimFrames delay:0.07f]; 
playWalkSound = [CCCallFuncN actionWithTarget:self selector:@selector(PlayRunningSound:)]; 

walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]]; 
[actor runAction:[CCSpawn actions:walkAction, nil]]; 

i utilisé le code ci-dessus où je veux mettre en pause mon action d'animation. et ajouté le code suivant quand je veux reprendre l'action d'animation.

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile: 
    @"Actor.plist"]; 
    spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"Actor.pvr.ccz"]; 
    [self addChild:spriteSheet]; 
    NSMutableArray *walkAnimFrames = [NSMutableArray array]; 
    for(int i = 1; i <= 8; ++i) { 
     [walkAnimFrames addObject: 
     [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: 
      [NSString stringWithFormat:@"clip000%d.png", i]]]; 
    } 
    CCAnimation *walkAnim = [CCAnimation 
          animationWithFrames:walkAnimFrames delay:0.07f]; 
    playWalkSound = [CCCallFuncN actionWithTarget:self selector:@selector(PlayRunningSound:)]; 

    walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]]; 
    [actor runAction:[CCSpawn actions:walkAction, nil]]; 
Questions connexes