swift 3 : Quickly playing sounds on AVAudioPlayerNode

标签 swift xcode avaudioengine avaudioplayernode

我正在制作一款基本游戏,并尝试为其制作热门声音。在 Rhythmic Fistman 的帮助下,我让它们在不同的音高上演奏,但现在我遇到了一个新问题 - 如果我尝试快速演奏它们,它就会滞后。这看起来似乎不是一个大问题,但在我正在开发的游戏中,每当你移动手指时,它都有可能发出敲击声,因此它会很快变得滞后,尤其是在多点触控时。

目前,我在 AVAudioEngine 中有两个节点用于两个 channel ,因此我可以一次播放两个点击声音,并且我使用它来停止其中一个节点,以便它可以播放新的声音:

if playerNode.isPlaying {
    playerNode.stop()
    playerNode.play()
}
playerNode.scheduleFile(file, at: nil, completionHandler: nil)

这样做的问题是,无论声音是否实际播放,isPlaying 总是返回 true,因为如果你执行playerNode.stop(),它似乎只返回 false,而且事实上,由于某种原因,它非常滞后一个接一个地播放大量的热门声音不会那么延迟。

我认为一个简单的解决方案是不重置节点,而是不播放 hitound,但由于 isPlaying 总是返回 true 我不能这样做。有没有更快的方法让音频节点播放声音?

最佳答案

看来scheduleBuffer毕竟是我所需要的

关于 swift 3 : Quickly playing sounds on AVAudioPlayerNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40037967/

相关文章:

android - 应用内购买 iOS 和 Android,可以关联到我的应用的用户

swift - 如何使用 UIProgressView 和 UITextField 作为进度值?

xcode - 用于指定 API 目标的自动化测试和 Xcode 配置文件

xcode - 在自定义 UITableViewCell 上放置阴影

ios - 建立一个简单的均衡器

ios - 将 slider 关联到 Float 属性

swift - 显示没有小数的 double ?

swift - XCAssets PNG 白色空间

swift - AVAudioSourceNode如何设置设置格式

ios - 在WatchOS上使用AVAudioEngine录音时禁止播放