如何在Xcode11中的Swift中随机播放数组中的音频文件?

问题描述 投票:0回答:1

我的应用程序中有一个按钮,我想随机播放一系列声音文件。我遵循了类似文章中的说明,但是当我按下“播放”按钮时,它会在启动模拟器时播放随机的声音文件,但会重复播放。它不会在每次按下按钮时拖曳它们。以下是我的ViewController的完整代码。感谢您的帮助!

import UIKit
import AVFoundation
import AudioToolbox


class ViewController: UIViewController, AVAudioPlayerDelegate {

    var audioPlayerHyeeeehLong: AVAudioPlayer = AVAudioPlayer()
    var audioPlayerHyeeeehShort: AVAudioPlayer = AVAudioPlayer()
    var beWellAudioPlayer: AVAudioPlayer = AVAudioPlayer()

    @IBOutlet weak var beWellButton: UIButton!
    @IBOutlet weak var restoreMindBodyButton: UIButton!
    @IBOutlet weak var spiritualCleanseButton: UIButton!

    var randomIndex = 0
    var soundFiles = ["sound1", "sound2", "sound3", "sound4", "sound5"]

    override func viewDidLoad() {
        super.viewDidLoad()

        // play full spiritual cleanse
        let hyeeeeh = Bundle.main.path(forResource: "hyeeeeh", ofType: "m4a")
        do{
            audioPlayerHyeeeehLong = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: hyeeeeh!))
        }catch{
            print(error)
        }

        // play restore mind body
        let hyeeeehShort = Bundle.main.path(forResource: "hyeeeeh1", ofType: "m4a")
        do{
            audioPlayerHyeeeehShort = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: hyeeeehShort!))
        }catch{
            print(error)
        }

        // play be well
        randomIndex = Int(arc4random_uniform(UInt32(soundFiles.count)))
        let selectedFileName = soundFiles[randomIndex]
        let beWell = Bundle.main.path(forResource: selectedFileName, ofType: "m4a")
            do{
                beWellAudioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: beWell!))
            }catch{
                print(error)
            }

       }


    @IBAction func beWell(_ sender: Any) {
        print("Be Well Button Pressed")
        beWellAudioPlayer.play()


    }

    @IBAction func playShortHyeeh(_ sender: Any) {
        audioPlayerHyeeeehShort.play()
    }

    @IBAction func playFullHyeeeh(_ sender: Any) {
        audioPlayerHyeeeehLong.play()
    }
}

编辑:下面是固定代码。一切正常!感谢您的帮助,R.B Niranjan!

import UIKit
import AVFoundation
import AudioToolbox


class ViewController: UIViewController, AVAudioPlayerDelegate {

    var audioPlayerHyeeeehLong: AVAudioPlayer = AVAudioPlayer()
    var audioPlayerHyeeeehShort: AVAudioPlayer = AVAudioPlayer()
    var beWellAudioPlayer: AVAudioPlayer = AVAudioPlayer()

    @IBOutlet weak var beWellButton: UIButton!
    @IBOutlet weak var restoreMindBodyButton: UIButton!
    @IBOutlet weak var spiritualCleanseButton: UIButton!

    var randomIndex = 0
    var soundFiles = ["sound1", "sound2", "sound3", "sound4", "sound5"]


    override func viewDidLoad() {
        super.viewDidLoad()

       }


    @IBAction func beWell(_ sender: Any) {
        randomIndex = Int(arc4random_uniform(UInt32(soundFiles.count)))
        let selectedFileName = soundFiles[randomIndex]
        let beWell = Bundle.main.path(forResource: selectedFileName, ofType: "m4a")
            do{
                beWellAudioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: beWell!))
            }catch{
                print(error)
            }
        if beWellAudioPlayer.isPlaying{
            beWellAudioPlayer.pause()
        }
        beWellAudioPlayer.currentTime = 0
        beWellAudioPlayer.play()

    }

    @IBAction func playShortHyeeh(_ sender: Any) {
        let hyeeeehShort = Bundle.main.path(forResource: "hyeeeeh1", ofType: "m4a")
        do{
            audioPlayerHyeeeehShort = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: hyeeeehShort!))
        }catch{
            print(error)
        }
        if audioPlayerHyeeeehShort.isPlaying{
            audioPlayerHyeeeehShort.pause()
        }
        audioPlayerHyeeeehShort.currentTime = 0
        audioPlayerHyeeeehShort.play()
    }

    @IBAction func playFullHyeeeh(_ sender: Any) {

        let hyeeeeh = Bundle.main.path(forResource: "hyeeeeh", ofType: "m4a")
               do{
                   audioPlayerHyeeeehLong = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: hyeeeeh!))
               }catch{
                   print(error)
               }
        if audioPlayerHyeeeehLong.isPlaying{
            audioPlayerHyeeeehLong.pause()
        }
        audioPlayerHyeeeehLong.currentTime = 0
        audioPlayerHyeeeehLong.play()
    }
}
ios swift avaudioplayer xcode11
1个回答
0
投票

选择一个随机的音频文件并播放时应单击一下按钮。

@IBAction func beWell(_ sender: Any) {
        print("Be Well Button Pressed")
        randomIndex = Int(arc4random_uniform(UInt32(soundFiles.count)))
        let selectedFileName = soundFiles[randomIndex]
        let beWell = Bundle.main.path(forResource: selectedFileName, ofType: "m4a")
            do{
                beWellAudioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: beWell!))
            }catch{
                print(error)
            }
        beWellAudioPlayer.play()
}
© www.soinside.com 2019 - 2024. All rights reserved.