如何使用swift切换到不同视图时连续播放背景音乐?

时间:2014-12-23 20:48:33

标签: ios audio swift ios8 background-music

我对swift和编码很新。我现在正在制作一款游戏,并且我已经添加了一些背景音乐,而且这些都很好。我甚至想办法在切换到不同的视图时如何连续播放音乐,但每次我回到主菜单时都会看到。我告诉游戏开始播放背景音乐的视图,它重新开始。我想要它做的是在用户启动应用程序时开始播放并保持循环直到用户关闭应用程序。我用这段代码来启动背景音乐:

var backgroundMusicPlayer: AVAudioPlayer!

func playBackgroundMusic(filename:String){     let url = NSBundle.mainBundle()。URLForResource(         filename,withExtension:nil)     if(url == nil){         println("找不到文件:(filename)")         返回     }

var error: NSError? = nil
backgroundMusicPlayer =
    AVAudioPlayer(contentsOfURL: url, error: &error)
if backgroundMusicPlayer == nil {
    println("Could not create audio player: \(error!)")
    return
}

backgroundMusicPlayer.numberOfLoops = -1
backgroundMusicPlayer.prepareToPlay()
backgroundMusicPlayer.play()

}

我把这段代码放在我的家庭视图控制器中(这是人们在打开应用时看到的第一个屏幕)

var player = AVAudioPlayer()

if  player.playing {
    player.play()
} else {
    playBackgroundMusic("BackgroundMusic.m4a")
}

现在我虽然如此:如果音乐正在播放,它会继续播放,ELSE会再次开始播放音乐。但是现在它只是开始播放音乐,即使音乐是在我来自的视图上播放的。我在其他2个视图中使用了这段代码来使音乐连续播放并且工作正常:

func resumeBackgroundMusic() {
   if let player = backgroundMusicPlayer {
       if !player.playing {
           player.play()
       }
   }

}

1 个答案:

答案 0 :(得分:2)

你可以从AppDelegate开始和停止你的音乐...最好的方法是创建一个MusicPlayer类,在AppDelegate中实例化它并在其中调用start和stop方法......

你有足够的经验来写这样的东西吗?

或者我应该帮你吗?