点击按钮时重复播放声音
Play sound repeatedly when tapping a button
我正在尝试为我的应用程序添加声音。我喜欢它,因为当我点击一个按钮时,它会播放快速的声音。但是,当快速重复点击按钮时,声音效果不佳(当我点击按钮 5 或 6 次时,它只播放 1 或 2 次)。这是我在按钮中的代码
player.play()
我外面有这个
var player = AVAudioPlayer()
let audioPath = NSBundle.mainBundle().pathForResource("illuminati", ofType: "wav")
查看已加载:
do {
try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath!))
} catch {}
怎样才能更好地反复播放声音?谢谢
你的声音只播放几次的原因是歌曲一直播放到结束或直到你停止,即使你连续多次按下按钮也是如此。
你可以手动停止音乐,所以在你按下一个播放声音的按钮之前,你说
player.stop()
优于
player.play()
有帮助吗?
问题是您在上一次调用完成之前多次调用 play
。您需要跟踪用户单击按钮的次数和播放歌曲的次数。
这是你可以做的:
使用整数 class 来记录按钮被点击的次数
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 {}
在delegate函数中,当上一首歌曲播放到最后时再播放一遍:
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();
}
}
}
我正在尝试为我的应用程序添加声音。我喜欢它,因为当我点击一个按钮时,它会播放快速的声音。但是,当快速重复点击按钮时,声音效果不佳(当我点击按钮 5 或 6 次时,它只播放 1 或 2 次)。这是我在按钮中的代码
player.play()
我外面有这个
var player = AVAudioPlayer()
let audioPath = NSBundle.mainBundle().pathForResource("illuminati", ofType: "wav")
查看已加载:
do {
try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath!))
} catch {}
怎样才能更好地反复播放声音?谢谢
你的声音只播放几次的原因是歌曲一直播放到结束或直到你停止,即使你连续多次按下按钮也是如此。 你可以手动停止音乐,所以在你按下一个播放声音的按钮之前,你说
player.stop()
优于
player.play()
有帮助吗?
问题是您在上一次调用完成之前多次调用 play
。您需要跟踪用户单击按钮的次数和播放歌曲的次数。
这是你可以做的:
使用整数 class 来记录按钮被点击的次数
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 {}
在delegate函数中,当上一首歌曲播放到最后时再播放一遍:
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(); } } }