当精灵到达路径的末尾时,如何从 SpriteKit 重复动作中获取回调?
Posted
技术标签:
【中文标题】当精灵到达路径的末尾时,如何从 SpriteKit 重复动作中获取回调?【英文标题】:How do I get a callback from a SpriteKit repeating action when the sprite reaches the end of a path? 【发布时间】:2013-10-29 22:45:55 【问题描述】:我以这种方式创建了我的SKAction
:
unicornAction = [SKAction followPath:mypath asOffset:NO orientToPath:YES duration:0.1];
并将其添加到我的SKSprite
:
[sprite runAction:[SKAction repeatActionForever:unicornAction] withKey:@"move"];
我这样做是为了让我可以在精灵穿过路径的运动中随时调整速度。
当我的精灵到达路径的尽头时,我需要一个回调,以便我可以删除精灵。我怎样才能得到这样的回调?
另外,有没有更好的方法使用SKAction
来做我想做的事情,同时允许我在动作运行期间的任何地方改变速度?
【问题讨论】:
【参考方案1】:您可以在序列末尾使用带有 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"];
【讨论】:
这比我想象的要好得多。谢谢!【参考方案2】:创建第二个 runBlock: 动作,在动作完成时执行您希望它执行的任何操作,然后使用您的 followPath 和块完成动作创建一个序列:动作。如果您不想使用块,还有 performSelector:onTarget: 操作。
https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKAction_Ref/Reference/Reference.html
【讨论】:
以上是关于当精灵到达路径的末尾时,如何从 SpriteKit 重复动作中获取回调?的主要内容,如果未能解决你的问题,请参考以下文章
SpriteKit - 在 SKAction 期间精灵的正确位置
如何在 SpriteKit 中从 Web API 加载精灵表
如何在 Swift 和 SpriteKit 中使用 UISwipeGestureRecognizer 而不是 touchesMoved?