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



我的应用程序中有一个按钮,我想随机播放一系列声音文件。我已经遵循了类似帖子中的说明,但是当我点击播放按钮时,它会在启动模拟器时播放随机声音文件,但会反复播放。它不会在每次按下按钮时随机播放它们。下面是我为我的视图控制器提供的完整代码。感谢您的任何帮助!

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()
}
}

选择随机音频文件并播放应在单击按钮时完成。

@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()
}

最新更新