OGeek|极客世界-中国程序员成长平台

标题: ios - Swift 3 多个 AVAudioPlayer [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 18:29
标题: ios - Swift 3 多个 AVAudioPlayer

对 Swift 很陌生,所以请原谅我的问题太天真了。
我构建了一个非常简单的应用程序,其中包含 3 个按钮,每个按钮播放不同的声音。它工作正常,但代码效率不高,因为我为每个要播放的声音创建了一个播放器,所以我想知道如何只使用播放器的一个实例来播放所有声音。这是我的代码:

import UIKit
import AVFoundation

class ViewController: UIViewController {

    var player1 = AVAudioPlayer()
    var player2 = AVAudioPlayer()
    var player3 = AVAudioPlayer()

    @IBAction func playU3(_ sender: Any) {
        player3.play()
    }

    @IBAction func playU2(_ sender: Any) {
        player2.play()
    }
    @IBAction func playU1(_ sender: Any) {
        player1.play()
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let audioPath3 = Bundle.main.path(forResource: "sound-3", ofType: "mp3")
        let audioPath2 = Bundle.main.path(forResource: "sound-2", ofType: "mp3")
        let audioPath1 = Bundle.main.path(forResource: "sound-1", ofType: "mp3")


        do {

            try player3 = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath3!))
            try player2 = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath2!))
            try player1 = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath1!))


        } catch {
            print(error)
        }
    }

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

}

提前致谢



Best Answer-推荐答案


请检查一下:

import UIKit
import AVFoundation

class ViewController: UIViewController {

    var player : AVAudioPlayer!

    @IBAction func playU3(_ sender: Any) {
        let audioPath = Bundle.main.path(forResource: "sound-3", ofType: "mp3")
        do {

            try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath!))
            player.play()
        } catch {
            print(error)
        }
    }

    @IBAction func playU2(_ sender: Any) {
        let audioPath = Bundle.main.path(forResource: "sound-2", ofType: "mp3")
        do {

            try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath!))
            player.play()
        } catch {
            print(error)
        }
    }
    @IBAction func playU1(_ sender: Any) {
        let audioPath = Bundle.main.path(forResource: "sound-1", ofType: "mp3")
        do {

            try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath!))
            player.play()
        } catch {
            print(error)
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

    }

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

}

关于ios - Swift 3 多个 AVAudioPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41464417/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) Powered by Discuz! X3.4