嘿,我有幾個AVAudioPlayers
每個包含一個聲音。如果我多次按下相同的按鈕,它應該從頭開始重複聲音。如果之後再按下另一個按鈕,則應停止運行聲音以便爲新的「騰出空間」。iOS AVAudioPlayer再次播放聲音
的代碼我使用爲:
-(void) plays:(int)p{ // p is the index of the sound being triggered
if([players[p] isPlaying])
{ // setting the time back to 0 makes
players[p].currentTime = 0.0; // the player automatically play again
}
else
{
[players[p] play]; // if not playing, start playing
}
if(last!=p)
{ // if the last sound is different from the current
[players[last] stop]; // stop the last one
players[last].currentTime = 0.0;} // put its position back to 0
last=p; // set the 'last' variable
}
然而,擊中同一個按鈕再次在沒有聽到聲音稍微延遲(也許20毫秒)結束。現在是時候了,AVAudioPlayer
似乎需要「倒帶」曲目才能再次播放。一個解決這個問題的想法是爲每個聲音創建AVAudioPlayer的多個對象,但這會產生一些糟糕的代碼!關於如何使這個過程更快的任何想法?
謝謝,亞歷克斯
編輯:玩2種不同的聲音,工作完全正常,我不能在他們之間聽到任何延遲,因爲我prepareToPlay
所有事先聲音。
感謝您的詳細解答,我會爲此付出努力。看起來我需要把自己看成AUGraph的東西:/也要感謝所有與音樂有關的輸入,但我自己是一名製作人,我知道自己在做什麼,但不幸的是,我在製作音樂方面比在編碼方面做得更好哈哈 – user2875404