菜鸟教程小白 发表于 2022-12-11 18:29:43

ios - Swift 3 多个 AVAudioPlayer


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

<pre><code>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: &#34;sound-3&#34;, ofType: &#34;mp3&#34;)
      let audioPath2 = Bundle.main.path(forResource: &#34;sound-2&#34;, ofType: &#34;mp3&#34;)
      let audioPath1 = Bundle.main.path(forResource: &#34;sound-1&#34;, ofType: &#34;mp3&#34;)


      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.
    }

}
</code></pre>

<p>提前致谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>请检查一下:</p>

<pre><code>import UIKit
import AVFoundation

class ViewController: UIViewController {

    var player : AVAudioPlayer!

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

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

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

            try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath!))
            player.play()
      } catch {
            print(error)
      }
    }
    @IBAction func playU1(_ sender: Any) {
      let audioPath = Bundle.main.path(forResource: &#34;sound-1&#34;, ofType: &#34;mp3&#34;)
      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.
    }

}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Swift 3 多个 AVAudioPlayer,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/41464417/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/41464417/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Swift 3 多个 AVAudioPlayer