我正在尝试使用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))

10-08 05:50