2013-03-19 92 views
0

代码::如何在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]但是,它不适用于我,一旦它启动它不会暂停。

回答

2

例如,您可以创建行动块,停止所有动画,并呼吁有stopAllActions方法

CCSprite *sprite = ...; 

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

,并使用CCDelayTime一些延迟

CCDelayTime *time = [CCDelayTime actionWithDuration:4]; 


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

哇,,它就像一个魅力但它停止了我的其他行动,如[厨师runAction:[CCRepeatForever actionWithAction: [CCSequence操作: [CCMoveBy actionWit hDuration:1.0 position:ccp(0,240)], [CCMoveBy actionWithDuration:1.0 position:ccp(0,-240)],nil]]];我想在我的动画停止后继续这个动作。 – 2013-03-19 07:22:22

+0

我记得我遇到了一些阻止问题。比你不需要停止所有的行动。尝试为所有动画设置标签CCMoveBy,CCMoveBy,CCSequence,CCRepeatForever。并在此块中使用标签来阻止它们。 – 2013-03-19 07:27:51

+0

啊,它工作正常......谢谢!我想投票但没有足够的声望.. – 2013-03-19 07:34:51

0

在Cocos2d中,stopAllActions会停止添加到同一节点的所有操作。如果不停止则意味着你指的是错误节点。确保你在右侧精灵上调用了stopAllActions。

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

[sprite runAction:[CCSequence actions:time, block, nil]]; 
相关问题