2016-10-14 32 views
0

我正在製作一款基本遊戲,我正在嘗試爲它製作打擊聲。在Rhythmic Fistman的幫助下,我讓他們以不同的方式進行比賽,但是現在我遇到了一個新問題 - 如果我儘快地嘗試打法,我會遇到一些新問題。這似乎不是一個大問題,但在我正在開發的遊戲中,無論何時移動手指,都有可能產生撞擊聲,因此速度會非常快,特別是使用多點觸控。Swift 3:在AVAudioPlayerNode上快速播放聲音

目前我有兩個通道的兩個節點在AVAudioEngine所以我可以一次打兩個hitsounds,和我用這個來阻止這些節點之一,所以它可以起到一個新的聲音:

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

問題在於,無論聲音是否真的在播放,isPlaying總是返回true,因爲它似乎只在播放playerNode.stop()時才返回false,並且由於某種原因它非常滯後,實際上它很少一個接一個地玩一大堆hitsounds。

我認爲一個簡單的解決方案,而不是重置節點,只是不播放hitsound,但由於isPlaying總是返回true我不能這樣做。有沒有更快的方法讓音頻節點播放聲音?

+0

好吧,我嘗試使用scheduleBuffer不是與.interrupts作爲選項,它似乎有(奇怪)的工作,但我會離開這個崗位開放的另一天在我正在做一些可怕的事情 – MysteryPancake

回答