God*_*her 2 iphone objective-c ios sprite-kit skaction
我有这个代码:
@implementation MyScene {
SKAction *delayAction;
}
Inside a method:
delayAction = [SKAction waitForDuration:3.0];
[self runAction:[SKAction repeatActionForever: [SKAction sequence:
@[delayAction, [SKAction ...]]]]]
withKey:@"myKey"];
Run Code Online (Sandbox Code Playgroud)
然后我想减少加班时间.(此方法在更新时调用:)所以我试过:
- (void)updateVelocity
{
NSLog(@"duration:%f",delayAction.duration);
delayAction.duration = delayAction.duration - 0.001;
}
Run Code Online (Sandbox Code Playgroud)
我得到:
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
Run Code Online (Sandbox Code Playgroud)
这似乎很好,但我的[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];
}
Run Code Online (Sandbox Code Playgroud)
这将执行您的操作,然后返回此功能以使用不同的等待时间再次运行,并再次,...
您甚至可以通过使一些结束条件跳转到if块内并停止循环来停止序列.
| 归档时间: |
|
| 查看次数: |
1359 次 |
| 最近记录: |