【发布时间】:2017-05-12 04:03:09
【问题描述】:
故事就是这样。
我有一个计时器,当我点击一个按钮时,timer.setEventHandler 会渲染动画(类似于每 125 毫秒在 UI 中添加 10 个圆圈)。动画运行流畅,到目前为止一切顺利。
现在我想在每次添加圆圈时添加声音(声音像哔哔声一样播放 10 毫米,但来自 mp3 文件)。我尝试了两种方法:
-
AudioServicesPlaySystemSound动画流畅,但声音播放不均匀。至少声音播放不会滞后于 UI。
-
使用
AVAudioPlay我在单例类中准备了 AVAudioPlay 实例,并且每次动画逻辑在 DispatchedQueue 中调用
play()以确保声音在单独的线程中播放。第一次按下按钮时,动画滞后。但是,当我在动画完成后不久(2秒内)再次按下按钮时,动画和声音将完美播放。但是,如果我在播放最后一个声音后等待更长的时间(例如 10 秒),则动画会滞后并且声音有点爆裂。
我想知道 iOS(我在 iPad Air 2 上运行 iOS 10)是否真的在 AVAudioPlay 实例不活动时将其置于睡眠状态。除非我在播放最后一个声音后的短时间内(2 秒)内按下按钮,否则 AVAudioPlay 线程将一直处于活动状态。
有什么想法吗?
【问题讨论】:
-
它是 AVAudioPlayer。并在询问之前尝试搜索。这已经出现了很多很多。搜索“AVAudioPlayer 延迟”。例如,您的问题与 stackoverflow.com/questions/14162805/… 非常接近。
-
@matt 不。没有发布的解决方案适用于我的情况。
标签: ios swift3 avaudioplayer