Ios SKAction序列实际上是否等待操作结束?
我有以下代码:Ios SKAction序列实际上是否等待操作结束?,ios,objective-c,sprite-kit,skaction,Ios,Objective C,Sprite Kit,Skaction,我有以下代码: -(void)aggravatedSeek:(SKSpriteNode *)target{ _isAggravated = YES; SKAction *action = [SKAction runBlock:^{ double randTime = 0.2; NSLog(@"%f", randTime); [self moveToSpriteNode:target withTimeInterval:randTim
-(void)aggravatedSeek:(SKSpriteNode *)target{
_isAggravated = YES;
SKAction *action = [SKAction runBlock:^{
double randTime = 0.2;
NSLog(@"%f", randTime);
[self moveToSpriteNode:target withTimeInterval:randTime];
}];
//SKAction *repeatAction = [SKAction repeatAction:action count:6];
SKAction *rep = [SKAction sequence:@[action, action, action, action, action]]; //Test Sequence
[self runAction:rep completion:^{
[self runAction:blackColorAction];
_isAggravated = NO;
}];
}
我希望我的操作实际等待,直到上一个操作完成。也就是说,我的动作需要排序,以便
rep
动作不会重复动作
动作,直到对象完成移动。目前,输出似乎立即运行所有操作,并且没有按应有顺序排列它们。我已经阅读了文档,现在我看到的是他们说要做的…运行块:操作是一种一次触发类型的操作。它将只运行一次块,然后动作立即“结束”
你想要的是一些动作不是设计用来处理的东西。它们运行一次,或在给定的时间段(持续时间)内运行。然而,它们不会运行,直到满足某些任意条件——这些条件可能立即成立,可能最终成立,也可能永远不会成立。这种方法使所有可变定时功能失效(即线性与时间的轻松缩放)
您可以做的是将“moveToSpriteNode”移动作为一个动作发出,并在更新方法中单独检查精灵是否已到达节点。如果是这样,您将运行下一个移动动作(不使用序列)
更容易的是,您可以简单地依靠移动动作结束,这意味着精灵已经到达目标节点。然后,这将触发序列中的下一个移动操作。如果要在每个目标上运行完成块,只需在完成块内安排下一个移动操作