是否有与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/