0

代码 ::

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],但它对我不起作用,一旦启动它就不会暂停。

4

3 回答 3

2

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

CCSprite *sprite = ...;

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

并使用 CCDelayTime 进行一些延迟

CCDelayTime *time = [CCDelayTime actionWithDuration:4];


[sprite runAction:[CCSequence actions:time, block, nil]];
于 2013-03-19T07:13:32.997 回答
0

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

于 2013-03-19T07:12:18.983 回答
0
CCDelayTime *time = [CCDelayTime actionWithDuration:10];// After 10 mile seconds

[sprite runAction:[CCSequence actions:time, block, nil]];
于 2013-03-19T07:14:50.250 回答