Swift AVAudioPlayer 从头开始​​重启

Swift AVAudioPlayer Restart from Beginning

我有一个 AVAudioPlayer 存储在一个名为 "player" 的 属性 中。当用户点击按钮时,会触发这段代码:

@IBAction func restartPressed(sender: AnyObject) {
    player.play()
}

当用户非常快速地连续两次单击按钮时,就会出现问题。

如果第一次点击的声音还在播放,似乎第二次呼叫被忽略了。

相反,我想:

a) 第二次点击按钮时从头开始播放;或

b)有两个"instances"的声音同时播放。

我将如何实现这两个选项中的一个或两个?

回答这些选项的 "either" 部分(而不是 "both"):(a) 如何停止并从头开始播放声音:

@IBAction func restartPressed(sender: AnyObject) {
    if player.playing {
        player.pause()
    }
    player.currentTime = 0
    player.play()
}

关于 (b):来自 Language Ref for AVAudioPlayer

Using an audio player you can:

...

  • Play multiple sounds simultaneously, one sound per audio player, with precise synchronization.

所以您需要两个独立的播放器同时(不同步)播放两个不同的声音,即使两个播放器使用相同的声音。我会坚持 (a).

dfri 的回答更新为 Swift 4

@IBAction func restartPressed(sender: UIButton) {

    if negativePlayer.isPlaying
    {
        negativePlayer.pause()
    }

    negativePlayer.currentTime = 0
    negativePlayer.play()
}
player.seek(to: .zero)
player.play()