所以基本上,我在第一个场景中播放音乐,一切正常。我过渡到场景 2,音乐自动停止,这正是我想要的。但后来我转回来,音乐开始了半秒钟……然后就无缘无故地被切断了。只是为了让事情变得更奇怪,只有当我将我的物理设备置于睡眠模式然后解锁它时,它才会再次完美地继续。
我做了一个过度简化的代码,只是为了直接解决我在实际项目中遇到的问题。这是我的第一个场景,它只是在启动时播放音乐并在触摸时转换到场景 2:
import SpriteKit
class GameScene: SKScene
{
override func didMoveToView(view: SKView)
{
let backgroundMusic = SKAudioNode(fileNamed: "WhatIsLove.mp3")
backgroundMusic.autoplayLooped = true
backgroundMusic.positional = false
addChild(backgroundMusic)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
{
let transition = SKTransition.revealWithDirection(.Down, duration: 1.0)
let nextScene = SceneTwo(size: scene!.size)
nextScene.scaleMode = .AspectFill
nextScene.backgroundColor = UIColor.blueColor()
scene?.view?.presentScene(nextScene, transition: transition)
}
}
这是场景 2,音乐在过渡前自动停止。除了在触摸时过渡回场景 1 之外,这里没有其他内容,我希望音乐再次开始播放(但它会在半秒后停止播放):
import SpriteKit
class SceneTwo: SKScene
{
override func didMoveToView(view: SKView)
{
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
{
let transition = SKTransition.revealWithDirection(.Down, duration: 1.0)
let nextScene = GameScene(size: scene!.size)
nextScene.scaleMode = .AspectFill
nextScene.backgroundColor = UIColor.greenColor()
scene?.view?.presentScene(nextScene, transition: transition)
}
}
不知道为什么会这样。我已经尝试了几种与 SKAudioNode 的组合以及其他声明变量并实现它的方法。我试过不使用 autoplayLooped 和位置选项,几乎所有东西。当我转换回我的第一个场景时,我希望音乐能够再次正常播放。