当sprite到达路径的末尾时,如何从SpriteKit重复操作获得回调?

时间:2013-10-29 22:45:56

标签: ios sprite-kit skaction skspritenode

我已经以这种方式创建了SKAction

unicornAction = [SKAction followPath:mypath asOffset:NO orientToPath:YES duration:0.1];

并将其添加到我的SKSprite

[sprite runAction:[SKAction repeatActionForever:unicornAction] withKey:@"move"];

我这样做是为了让我可以在精灵运动中随时调整速度。

当我的精灵到达路径的末尾时,我需要一个回调,以便我可以删除精灵。我怎样才能得到这样的回调?

另外,有没有更好的方法使用SKAction来做我想做的事情,同时允许我在动作运行期间的任何地方改变速度?

2 个答案:

答案 0 :(得分:9)

您可以在末尾使用带有runBlock或performSelector的序列:

SKAction* sequence = [SKAction sequence:@[unicornAction, [SKAction runBlock:^{
    // code at end of path goes here...
}]];

您也可以使用

[sprite runAction:sequence withKey:@"follow path"];

然后按键获取操作:

SKAction* sequence = [sprite actionForKey:@"follow path"];

答案 1 :(得分:0)

创建第二个runBlock:动作,在动作完成时执行您希望它执行的任何操作,然后使用您的followPath和块完成动作创建一个序列:action。如果您不想使用块,还有一个performSelector:onTarget:action。

https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKAction_Ref/Reference/Reference.html