我的应用程序中有一个按钮,我想随机播放一系列声音文件。我遵循了类似文章中的说明,但是当我按下“播放”按钮时,它会在启动模拟器时播放随机的声音文件,但会重复播放。它不会在每次按下按钮时拖曳它们。以下是我的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()
}
}
选择一个随机的音频文件并播放时应单击一下按钮。
@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()
}