我正在制作一款基本游戏,并尝试为其制作热门声音。在 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/