SpriteKit:场景完成呈现时回调?
Posted
技术标签:
【中文标题】SpriteKit:场景完成呈现时回调?【英文标题】:SpriteKit: callback when scene is done presenting? 【发布时间】:2017-12-20 04:43:17 【问题描述】:在 SpriteKit 中,当场景完成转换时是否有回调?
SKView presentScene
函数似乎没有回调。
另一种方法是让场景在场景进入视野后手动通知调用者,但希望有一种更简洁的方法,使用原生回调。
【问题讨论】:
据我所知没有回调,需要在老场景上使用moveFromView @Knight0fDragon 看起来就是这样。请张贴作为答案,以便您获得信用!谢谢!尽管您不需要使用旧场景。您可以使用新场景中的事件(例如 willMove、didMove)。 不能使用新场景,必须使用旧场景,新场景立即触发,这不是你想要的 【参考方案1】:presentScene
在场景完成转换时没有已知的回调,而是使用Notification
s 或在您的传出场景func willMove(from:view)
上创建自己的某种代理来实现所需的效果
func willMove(from view:SKView)
NotificationCenter.default.post(name: "TRANSITIONCOMPLETE", object: nil)
//or create a delegate using protocols, assign the delegate, and call it
delegate?.finishedTransition()
注意,您必须使用出局场景willMove(from:view)
,这是过渡期间发生的最后一件事。 didMove(to:view)
incomingScene 是过渡的开始
【讨论】:
正确,虽然从技术上讲,问题要求在过渡结束时通知,所以didMove
是正确的(以及使用了什么)。感谢您的帮助!
@Crashalot.... 你和我对“结束”的定义截然不同。对我来说,那是过渡结束的时候,也就是 willMove(fromView)
你是对的,“结论”是模棱两可的。问题的措辞是正确的:当新场景出现时。
...不,这不是模棱两可的。您希望在新场景出现时出现,还是希望在过渡完成时出现?这是两件不同的事情
新场景出现时,好像presentScene
在新场景出现时有回调。谢谢!以上是关于SpriteKit:场景完成呈现时回调?的主要内容,如果未能解决你的问题,请参考以下文章
Swift:如何获得Spritekit场景的大小以呈现SKNode全屏?
SpriteKit 在转换到新场景时收到有关 UIElements 的错误