1

一般来说,我对 swift 和编码很陌生。我现在正在制作游戏,并且添加了一些背景音乐,一切正常。我什至想出了在切换到不同视图时如何让音乐连续播放,但每次我回到“主菜单”视图时,我告诉游戏开始播放背景音乐,它又重新开始了。我想要它做的是在用户启动应用程序时开始播放并一直循环直到用户关闭应用程序。我使用这段代码来启动背景音乐:

var backgroundMusicPlayer: AVAudioPlayer!

func playBackgroundMusic(filename: String) { let url = NSBundle.mainBundle().URLForResource( filename, withExtension: nil) if (url == nil) { println("Could not find file: (filename)") return }

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")
}

现在我认为:如果音乐正在播放,它会继续播放,否则它会再次开始播放音乐。但是现在它只是再次开始播放音乐,即使音乐是在我来自的视图上播放的。我在其他两个视图中使用了这段代码,顺便让音乐连续播放,效果很好:

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

}

4

1 回答 1

2

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

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

还是我应该帮助你?

于 2014-12-23T20:54:37.063 回答