点击按钮时重复播放声音

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。您需要跟踪用户单击按钮的次数和播放歌曲的次数。

这是你可以做的:

  1. 使用整数 class 来记录按钮被点击的次数

    var numClicks = 0
    var buttonClickTime:NSDate? = nil // The last time when the button is clicked
    
    @IBAction func yourbuttonclickfunction() {
        numClicks++; 
        buttonClickTime = NSDate()
        player.play()
    } 
    
  2. 注册AVAudioPlayerDelegate

    的委托
    do {
          try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath!))
    
          // Add this 
          player.delegate = self
    } catch {}
    
  3. 在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();
             } 
         }
    }