CCAction阻止“补间”

时间:2013-12-23 15:16:24

标签: ios cocos2d-iphone

CCAction是否与SKAction中的SpriteKit类似,在操作期间多次调用(因此您可以根据已经过去的时间创建自定义效果) ?)

我找到了CCActionCallBlock,但这只被调用一次而且没有“时间过去的参数”。

例如Cocos2D中的这类(SpriteKit)。

SKAction *customACtion = [SKAction customActionWithDuration:ANIMATION_TIME actionBlock:^(SKNode *node, CGFloat elapsedTime) {
    // Do something here
}];

我想要达到的效果是this。我在SpriteKit中可以这样做:

#define ANIMATION_TIME 2

SKAction *customACtion = [SKAction customActionWithDuration:ANIMATION_TIME actionBlock:^(SKNode *node, CGFloat elapsedTime) {
    // Determine the percentage of the elapsed time
    float percentage = (elapsedTime / ANIMATION_TIME) * 100;
    // Put the result in a label
    self.label.text = [NSString stringWithFormat: @"%d", percentage];
}];

1 个答案:

答案 0 :(得分:2)

在cocos2d中,你可以创建多个CCActions并将它们放在一个容器(CCSequence)中,以便一个接一个地运行。

以下是复合动作的示例..

id action1 = [CCMoveTo actionWithDuration:2 position:ccp(100,100)];
id action2 = [CCMoveBy actionWithDuration:2  position: ccp(80,80)];
id action3 = [CCMoveBy actionWithDuration:2  position: ccp(0,80)];
[sprite runAction: [CCSequence actions:action1, action2, action3, nil]];

将首先执行action1。当action1完成时,将执行action2。当action2完成时,只会执行action3。

有关详细信息,请参阅此OFFICAL LINK

这可能是dnoe ..

 [self schedule: @selector(updateLabel:) interval:0.1] // Set interval,repeat whatever you want

 -(void) updateLabel: (ccTime) dt
  {
     if(dt>2000){
       [self unschedule:@selector(updateLabel)];
    }
     float percentage =percentage+ (dt/ (ANIMATION_TIME * 10));
      // Put the result in a label
     self.label.text = [NSString stringWithFormat: @"%d", percentage];

  }