gpt4 book ai didi

iOS Swift AVAudioPlayer 播放完毕后如何将 currentTime 重置为零

转载 作者:行者123 更新时间:2023-11-30 13:12:24 26 4
gpt4 key购买 nike

我的代码应该在按下按钮时播放 C 大调音阶波形文件。点击单独的停止按钮将停止播放并将 currentTime 重置为零。

@IBAction func onPlayButtonClick(sender: UIButton)
{
play.enabled = false
let path = NSBundle.mainBundle().pathForResource("cmajor", ofType: "wav")!
let url = NSURL(fileURLWithPath: path)
do
{
scalePlayer = try AVAudioPlayer(contentsOfURL: url)
scalePlayer.prepareToPlay()
scalePlayer.enableRate = true
scalePlayer.rate = 0.75
scalePlayer.play()
}
catch
{

}

}

它按预期工作,但是当文件播放完毕时如何将 currentTime 设置为零?我在开发者文档中找不到任何内容。

最佳答案

您必须设置委托(delegate):

scalePlayer.delegate = self

然后你实现这个回调

func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) {
//set the current time here
scalePlayer.currentTime = 0
}

更新

以下是如何实现此功能的示例(基于您的代码):

class MyViewController: UIViewController, AVAudioPlayerDelegate {

@IBOutlet weak var play: UIButton!

private var scalePlayer: AVAudioPlayer?

override func viewDidLoad() {
super.viewDidLoad()

let path = NSBundle.mainBundle().pathForResource("cmajor", ofType: "wav")!
let url = NSURL(fileURLWithPath: path)
scalePlayer = try? AVAudioPlayer(contentsOfURL: url)

scalePlayer?.delegate = self
}

@IBAction func onPlayButtonClick(sender: UIButton) {
play.enabled = false
scalePlayer?.prepareToPlay()
scalePlayer?.enableRate = true
scalePlayer?.rate = 0.75
scalePlayer?.play()
}

func audioPlayerDidFinishPlaying(player: AVAudioPlayer, successfully flag: Bool) {
scalePlayer?.currentTime = 0
}
}

关于iOS Swift AVAudioPlayer 播放完毕后如何将 currentTime 重置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38599116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com