2017-07-15 82 views
3

在SpriteKit中,场景完成其转换时是否存在回调?SpriteKit:场景完成后回调?

它看起来不像SKView presentScene函数有回调。

另一种方法是让场景在场景移动到视图后手动通知调用者,但希望有一个本地回调的更干净的方法。

+0

有没有回拨,我知道,你需要使用旧的场景 – Knight0fDragon

+0

@ Knight0fDragon这似乎是moveFromView。请发帖作为答案,以便您可以获得信用!谢谢!尽管你不需要使用旧的场景。您可以使用新场景中的事件(例如,willMove,didMove)。 – Crashalot

+0

你不能使用新的场景,你必须使用旧的场景,新的场景立即着火,这不是你想要的 – Knight0fDragon

回答

3

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() 
} 

注意,你不知道回调必须使用outgoingScenes willMove(from:view),这是转换过程中发生的最后一件事。 didMove(to:view) on incomingScene是转换的开始

+0

正确,虽然从技术上讲,当过渡结束时要求通知的问题,所以'didMove'是正确(以及使用了什么)。感谢您的帮助! – Crashalot

+0

@Crashalot ....你和我对“结论”有很不同的定义。对我来说,这是一个过渡结束时,这是willMove(fromView) – Knight0fDragon

+0

你是对的,“结论”是不明确的。这个问题的措词是正确的:当新的场景出现时。 – Crashalot