Swift 4:如何在按下按钮时让声音自动播放?
Swift 4: How to have a sound play over itself when a button is pushed?
所以我现在的情况是,每当我按下一个按钮,声音就会从头重新开始,并切断已经播放的声音。我想要的是当我按下按钮时声音自己播放,所以如果我在第一次按下后立即按下第二次,第二个声音会在第一个声音上播放而不是切断它。如果您需要澄清我需要什么,请告诉我。到目前为止,这是我的代码:
@IBAction func bull(_ sender: Any) {
let url = Bundle.main.url(forResource: "Bull", withExtension: "mp3")!
do
{
player = try AVAudioPlayer(contentsOf: url)
guard let player = player else { return }
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
player.prepareToPlay()
player.play()
}
catch let error
{
print(error.localizedDescription)
}
}
谢谢。
一个玩家一次只能播放一种声音。您可能必须执行以下操作
创建一个数组 players
var arrPlayer: [AVAudioPlayer] = []
然后在您的方法中执行以下操作
let url = Bundle.main.url(forResource: "Bull", withExtension: "mp3")!
do
{
player = try AVAudioPlayer(contentsOf: url)
arrPlayer.append(player)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
try AVAudioSession.sharedInstance().setActive(true)
arrPlayer.last?.prepareToPlay()
arrPlayer.last?.play()
}
catch let error
{
print(error.localizedDescription)
}
所以我现在的情况是,每当我按下一个按钮,声音就会从头重新开始,并切断已经播放的声音。我想要的是当我按下按钮时声音自己播放,所以如果我在第一次按下后立即按下第二次,第二个声音会在第一个声音上播放而不是切断它。如果您需要澄清我需要什么,请告诉我。到目前为止,这是我的代码:
@IBAction func bull(_ sender: Any) {
let url = Bundle.main.url(forResource: "Bull", withExtension: "mp3")!
do
{
player = try AVAudioPlayer(contentsOf: url)
guard let player = player else { return }
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
player.prepareToPlay()
player.play()
}
catch let error
{
print(error.localizedDescription)
}
}
谢谢。
一个玩家一次只能播放一种声音。您可能必须执行以下操作
创建一个数组 players
var arrPlayer: [AVAudioPlayer] = []
然后在您的方法中执行以下操作
let url = Bundle.main.url(forResource: "Bull", withExtension: "mp3")!
do
{
player = try AVAudioPlayer(contentsOf: url)
arrPlayer.append(player)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
try AVAudioSession.sharedInstance().setActive(true)
arrPlayer.last?.prepareToPlay()
arrPlayer.last?.play()
}
catch let error
{
print(error.localizedDescription)
}