【问题标题】:Trouble with looping audio music play in viewDidLoad Swift 3在 viewDidLoad Swift 3 中循环播放音频音乐的问题
【发布时间】:2016-12-12 01:19:39
【问题描述】:

我正在尝试在应用启动后播放音乐。没有显示构建错误,但没有播放音乐。这是我在 viewDidLoad 中的代码。我还在顶部导入了 AVFoundation 和 SpriteKit。 (类似问题中提出的解决方案与 Swift 2 相关,不适用于 Swift 3)

    override func viewDidLoad() {

//这里我改变了datepicker的背景颜色

    dateWheel.backgroundColor = .blue
    dateWheel.setValue(UIColor.white, forKeyPath: "textColor")

//应用启动后音乐应该开始播放

    func playSound(soundName: String)

    {
        let musicPlay = NSURL(fileURLWithPath: Bundle.main.path(forResource: "chinaAudioNew", ofType: "mp3")!)
        do{
            let audioPlayer = try AVAudioPlayer(contentsOf:musicPlay as URL)
            audioPlayer.prepareToPlay()
            audioPlayer.play()
            audioPlayer.numberOfLoops = -1

        }catch {
            print("Error getting the audio file")
        }
    }



    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

【问题讨论】:

标签: audio swift3 avfoundation avaudioplayer


【解决方案1】:

这是你的问题:

let audioPlayer = try AVAudioPlayer(contentsOf:musicPlay as URL)

这是一个本地变量,所以它甚至在它有机会开始播放之前就已经不存在了。

【讨论】:

  • 我应该用什么代替它?
  • 我在函数之外添加了这个但仍然没有音频... var audioPlayer:AVAudioPlayer = AVAudioPlayer();
  • 我不知道你现在在做什么。我所知道的是您在问题中输入的代码。我向你保证,我的回答正确地解释了为什么 那个 代码永远不会播放任何声音。
  • 所以我应该废弃整个区块还是只废弃那一行?如何使其成为一个属性以使其始终存在?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多