如何在cocos2d-iphone中间隔一段时间后停止动画?

时间:2013-03-19 07:06:01

标签: iphone animation cocos2d-iphone

代码::

if (CGRectIntersectsRect(food.sprite.boundingBox, playerRect)) {
    [food.sprite stopAllActions]; 

    [walkAnimFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:

    [NSString stringWithFormat:@"newpackman2.png", 0]]];

    [walkAnimFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:

    [NSString stringWithFormat:@"newpackman3.png", 1]]];

    walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.2f];

    self.walkAction = [CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]];

    self.walkAction.tag = 1;
    [chef runAction:_walkAction];
}

它工作正常,当对象与厨师相撞但持续运行时,它会启动动画。 我想在3-4秒后停止动画。
我使用了 [sprite stopActionByTag:1] 但是,它对我来说不起作用,一旦启动它就没有了暂停。

3 个答案:

答案 0 :(得分:2)

例如,您可以创建停止所有动画的动作块并调用stopAllActions方法

CCSprite *sprite = ...;

CCCallBlock *block = [CCCallBlock actionWithBlock:^{
            [sprite stopAllActions];
        }];

并使用CCDelayTime进行一些延迟

CCDelayTime *time = [CCDelayTime actionWithDuration:4];


[sprite runAction:[CCSequence actions:time, block, nil]];

答案 1 :(得分:0)

在Cocos2d中,stopAllActions停止添加到同一节点的所有操作。如果没有停止,则表示您指的是错误的节点。确保在右侧精灵上调用了stopAllActions。

答案 2 :(得分:0)

CCDelayTime *time = [CCDelayTime actionWithDuration:10];// After 10 mile seconds

[sprite runAction:[CCSequence actions:time, block, nil]];