Swift 3:在AVAudioPlayerNode上快速播放声音

时间:2016-10-14 08:00:27

标签: swift xcode avaudioengine avaudioplayernode

我正在制作一个基本的游戏,我正试图为它制作点击声。在Rhythmic Fistman的帮助下,我让他们在不同的球场上比赛,但是现在我遇到了一个新问题 - 如果我试着很快就打它们就会落后。这可能看起来不是一个大问题,但在我正在开发的游戏中,每当你移动你的手指时它就有可能发出一声撞击声,所以它会很快变得迟钝,尤其是多点触控时。

目前我在AVAudioEngine中有两个通道用于两个通道,所以我可以同时播放两个hitsounds,而我正在使用它来停止其中一个节点,以便它可以发出新的声音:

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

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

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

1 个答案:

答案 0 :(得分:0)

似乎scheduleBuffer毕竟是我需要的