• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - Swift 3 多个 AVAudioPlayer

[复制链接]
菜鸟教程小白 发表于 2022-12-11 18:29:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

对 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap