在 viewDidLoad Swift 3 中循环播放音频音乐的问题

Posted

技术标签:

【中文标题】在 viewDidLoad Swift 3 中循环播放音频音乐的问题【英文标题】:Trouble with looping audio music play in 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.

【问题讨论】:

AVAudioPlayer.play() does not play sound的可能重复 这是 swift 3,我尝试了这些解决方案,但声音仍然没有播放 【参考方案1】:

这是你的问题:

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

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

【讨论】:

我应该用什么代替它? 见***.com/questions/29379524/… 我在函数之外添加了这个但仍然没有音频... var audioPlayer:AVAudioPlayer = AVAudioPlayer(); 我不知道你现在在做什么。我所知道的是您在问题中输入的代码。我向你保证,我的回答正确地解释了为什么 那个 代码永远不会播放任何声音。 所以我应该废弃整个区块还是只废弃那一行?如何使其成为一个属性以使其始终存在?

以上是关于在 viewDidLoad Swift 3 中循环播放音频音乐的问题的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3:在 ViewDidLoad 中从服务器获取信息,当单击按钮时,等待服务器的信息响应

swift中闭包的循环引用

为啥viewDidLoad在swift中完成时不显示数据? [关闭]

Swift 单元测试 - 等待 viewDidLoad

Swift iOS SearchController 未在 ViewDidLoad 中调用

ViewDidLoad 未按正确顺序执行操作 - Firebase、Swift