代码::
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]
但是,它对我来说不起作用,一旦启动它就没有了暂停。
答案 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]];