SpriteKit覆盖音频文件

时间:2015-10-15 14:10:49

标签: sprite-kit avaudioplayer

我试图为我的游戏设置一个背景叮当声,它应该从Home场景开始,然后在其他场景中连续循环。

这就是我班上的样子:

class AudioPlayer: AVAudioPlayer {
var audioPlayer: AVAudioPlayer? = AVAudioPlayer()
let ost = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("bkg", ofType: "mp3")!)

func playOst() {
        do {
            audioPlayer = try AVAudioPlayer(contentsOfURL: ost)
        }
        catch {
            audioPlayer = nil
        }
        audioPlayer?.prepareToPlay()
        audioPlayer!.play()
        audioPlayer!.numberOfLoops = -1
}

func stopOst() {
    audioPlayer!.stop()
}

因为我将播放方法放在家庭场景中,所以每次加载时它都会开始播放新曲目,将一个曲目叠加到另一个曲目上会导致一个大混乱。我该如何预防?

1 个答案:

答案 0 :(得分:0)

让您的音频播放器类成为单身,或让AppDelegate照顾它。这样您还可以随时控制应用中任何场景/屏幕的音乐。

每当主屏幕加载检查音乐是否已播放时,如果没有,请调用playOst,否则不执行任何操作。