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];
}];
答案 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];
}