[英]Modify the speed of a running SKAction
我有以下代码:
@implementation MyScene {
SKAction *delayAction;
}
Inside a method:
delayAction = [SKAction waitForDuration:3.0];
[self runAction:[SKAction repeatActionForever: [SKAction sequence:
@[delayAction, [SKAction ...]]]]]
withKey:@"myKey"];
然后,我想减少加班时间。 (此方法在更新时被调用:)所以我尝试了:
- (void)updateVelocity
{
NSLog(@"duration:%f",delayAction.duration);
delayAction.duration = delayAction.duration - 0.001;
}
我得到:
2014-04-04 11:45:05.781 FlyFish[5409:60b] duration:1.300000
2014-04-04 11:45:05.785 FlyFish[5409:60b] duration:1.299000
2014-04-04 11:45:05.800 FlyFish[5409:60b] duration:1.298000
2014-04-04 11:45:05.816 FlyFish[5409:60b] duration:1.297000
看起来不错,但是我的[SKAction ...]在3秒后仍然继续重复。
我会以其他方式进行。 像这样
- (void)recursiveActionMethod
{
if (some end condition is met) {
return;
// this allows you to stop the repeating action.
}
self.duration -= 0.01;
// store duration in a property
SKAction *waitAction = [SKAction waitForDuration:self.duration];
SKAction *theAction = [SKAction doWhatYouWantHere];
SKAction *recursiveAcion = [SKAction performSelector:@selector(recursiveActionMethod) onTarget:self];
SKAction *sequence = [SKAction sequence:@[waitAction, theAction, recursiveAction]];
[self runAction:sequence];
}
这将执行您的操作,然后返回此功能,以不同的等待时间一次又一次地再次运行,...
您甚至可以通过使某些结束条件跳到if块中并停止循环来停止序列。
我有点迟了,但是您可以将操作设置为SKActionTimingEaseOut。 同样,这是语言本机,应该会稍快一些。 (尽管您不能自定义速度更改),可以执行以下操作:
yourSKAction.timingMode = SKActionTimingEaseOut;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.