ios – 在for循环中停止使用playAtTime()设置多个AVAudioPlayers

ios – 在for循环中停止使用playAtTime()设置多个AVAudioPlayers,第1张

概述当选择行时,以下代码设置一组AVAudioPlayers在特定日期播放(在这种情况下,50个玩家以1秒的间隔播放). 由于我想让整个过程在再次触摸时重新启动,所以需要在for循环中打破设置,因为需要几秒钟才能设置播放器. 除此之外,使用AVAudioPlayerDelegate的audioDidFinishPlaying委托方法完成播放后,每个播放器都被删除.我没有将其包含在代码中,因为它与问题无 当选择行时,以下代码设置一组AVAudioPlayers在特定日期播放(在这种情况下,50个玩家以1秒的间隔播放).
由于我想让整个过程在再次触摸时重新启动,所以需要在for循环中打破设置,因为需要几秒钟才能设置播放器.

除此之外,使用AVAudioPlayerDelegate的audioDIDFinishPlaying委托方法完成播放后,每个播放器都被删除.我没有将其包含在代码中,因为它与问题无关.

我试过在for循环中使用一个标志来检查是否允许设置,但是不起作用.

var players: [AVAudioPlayer] = []var loadError: NSError?overrIDe func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell {  // Removes the players that have been setup already.  players.removeAll()  // The for loop from the prevIoUs row selection should be stopped here.  for i in 0..<50 {    do {      let player = try AVAudioPlayer(contentsOfURL: soundUrls[i])      players += [player]      // The process of setting these up takes a few seconds,I need to break it.      print("Firing timer")         player.playAtTime(player.deviceCurrentTime + NSTimeInterval(i))    } catch let error as NSError {      loadError = error    }  }}

会发生什么情况是,由前一行选择触发的设置将一直持续到完成,只有新的for循环开始.
我需要更早地打破它.

我不知道如何解决这个问题.也许通过从主线程中删除进程(How?)?任何帮助非常感谢!

解决方法 我对您对这个问题的陈述有些困惑,但是我会尽量给出建议.
你说你在选择一行时设置玩家,但是设置它们的代码是在cellForRowAtIndexPath中.因此,当您的表格视图中返回并显示单元格时,设置和播放开始.

你究竟想要实现什么?你有一个表格视图有多行,每当你点击一个单元格,五十个声音必须开始一个接一个地播放(相隔1秒).如果你再次点击相同的单元格,应该停止并重启,是吗?

那么我会做的是在tableVIEwController的vIEwDIDLoad中设置50个玩家.使用preparetoPlay().
需要时启动它们

那么如果你需要重新启动它们,只需循环浏览它们,检查它们是否仍在使用isPlaying播放.暂停它们,如果需要,将当前时间设置为0并再次调用playAtTime.
不要删除audioDIDFinishPlaying中的播放器.因为那时你必须重新创建它们.
只需重置它们,以便它们可以再次立即播放.

顺便说一句,如果你要做更多的音频,想要更多的控制和更好的表现,我强烈推荐优秀的框架惊人的音频引擎2或AudioKit

总结

以上是内存溢出为你收集整理的ios – 在for循环中停止使用playAtTime()设置多个AVAudioPlayers全部内容,希望文章能够帮你解决ios – 在for循环中停止使用playAtTime()设置多个AVAudioPlayers所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1108537.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存