В моем приложении есть кнопка, с которой я хочу воспроизвести ряд звуковых файлов в случайном порядке. Я следовал инструкциям из аналогичных постов по этому поводу, но когда я нажимаю кнопку воспроизведения, при запуске эмулятора проигрывается случайный звуковой файл, но несколько раз. Он не перебирает их при каждом нажатии кнопки. Ниже приведен полный код моего 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()
}
}
РЕДАКТИРОВАТЬ: Ниже приведен фиксированный код. Все работает! Спасибо за помощь, РБ Ниранджан!
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()
}
}