基本上,我在第一个场景上播放音乐,一切正常。我转换到场景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&amp;位置选择,几乎所有。当我转换回第一个场景时,我希望音乐再次正常播放。