我正在尝试使用NSNotificationCenter在两个SKScenes之间进行转换,但是由于某些原因,当从我的SKScene使用NSNotificationCenter时,crossFadeWithDuration无法正常工作。
“不正确”是指当前的SKScene将在新的SKScene开始融合之前开始褪色为黑色,就像常规的fadeWithDuration方法一样。
这是我的代码:
在我的ViewController中,我将其发布在viewDidLoad中:
let crossFade = SKTransition.crossFadeWithDuration(5.0)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "bubblePop:", name:"openBubblePop", object: nil)
我在SKScene中称其为:
func loadGame(sender: String) {
NSNotificationCenter.defaultCenter().postNotificationName("openBubblePop", object: self)
}
这是它在我的ViewController中运行的块:
func bubblePop(_:NSNotificationCenter) {
skView.presentScene(BubblePop(size: skView.bounds.size), transition: crossFade)
}
我尝试过通过UIButton调用相同的presentScene行,并且过渡按预期工作。有谁知道为什么这样工作吗?
更新
我已向Apple提交了有关此问题的错误报告。 CrossFadeWithDuration仅在iOS 8上运行时才能正常运行,而在iOS 7和9上运行不正确。
最佳答案
为什么要完全使用NSNotificationCenter?从您的SKScene致电:
self.view?.presentScene(BubblePop(size: (self.view?.bounds.size)!), transition: SKTransition.crossFadeWithDuration(5.0))