AVAudioPlayer。停下来

时间:2015-03-03 20:35:47

标签: swift avaudioplayer

Swift中有一个playAtTime函数,允许您指定想要开始播放的任何时间。我需要找到一种方法来做相反的事情。是否有任何功能允许您指定希望玩家停止的时间?

2 个答案:

答案 0 :(得分:4)

您只需设置一个计时器,在x秒后触发,并添加一个停止音频的方法,如下所示:

var audioPlayerTimer = NSTimer()

audioPlayer.play()
audioPlayerTimer = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: "stopAfter3seconds", userInfo: nil, repeats: false)

func stopAfter3seconds(){
    audioPlayer.stop()
}

答案 1 :(得分:0)

Leo 上面的代码现在对于 Swift 5 已经过时了。我使用以下代码和 AVAudioPlayer 在预定时间停止音频。你可能有兴趣知道定时器间隔也是毫秒的,分辨率大概是0.1到0.05秒。

这是我在音频播放器类中加入的代码:

var audioPlayerTimer = Timer()

在我想调用的函数中设置播放间隔:

audioPlayerTimer = Timer.scheduledTimer(timeInterval: 3.2, target: self, selector: #selector(self.pauseAudio), userInfo: nil, repeats: false)

您会注意到我有一个名为 pauseAudio 的单独函数。您需要在该函数前面使用@objc,以便它在上面的代码中识别它:

@objc func pauseAudio() {
    guard let audioPlayer = audioPlayer else { return }
    audioPlayer.pause()
}

您可以传递变量以使 timeInterval 成为不同的数字。只需将其作为 Double 发送即可。