是否有与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];
}];

最佳答案

在cocos2d中,您可以创建多个CCAction并将它们放入容器(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

这样可以。

 [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];

  }

关于ios - CCAction块“补间”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20746302/

10-09 16:26