我正在尝试为我的应用添加声音。我想要它,当我点击一个按钮,它播放一个快速的声音。但是,当快速重复按下按钮时,声音也不起作用(当我按下按钮5或6次时,它只播放1或2次)。这是按钮中的代码
player.play()
我在外面有这个
var player = AVAudioPlayer()
let audioPath = NSBundle.mainBundle().pathForResource("illuminati", ofType: "wav")
viewDidLoad中:
do {
try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath!))
} catch {}
我怎样才能更好地播放声音?感谢。
答案 0 :(得分:2)
您的声音只播放一次的原因是,即使您连续多次按下该按钮,该歌曲一直播放直到您完成或直到您停止播放为止。 你可以手动停止音乐,所以在按下播放声音的按钮之前你会说
player.stop()
而不是
player.play()
这有帮助吗?
答案 1 :(得分:1)
问题是您在上一次通话结束前多次调用play
。您需要跟踪用户逐一点击按钮和播放歌曲的次数。
这是你可以做的:
在您的班级中使用整数来跟踪点击按钮的次数
var numClicks = 0
var buttonClickTime:NSDate? = nil // The last time when the button is clicked
@IBAction func yourbuttonclickfunction() {
numClicks++;
buttonClickTime = NSDate()
player.play()
}
注册AVAudioPlayerDelegate
do {
try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath!))
// Add this
player.delegate = self
} catch {}
在委托功能中,当前一首歌到达结尾时再次播放该歌曲:
optional func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer,
successfully flag: Bool)
{
if --numClicks > 0
{
let now = NSDate()
let duration = now.timeIntervalSinceDate(buttonClickTime!)
// If the button click was less than 0.5 seconds before
if duration < 0.5
{
// Play the song again
player.play();
}
}
}