【发布时间】:2015-04-09 08:06:11
【问题描述】:
嘿,我有几个AVAudioPlayers,每个都包含一个声音。如果我按同一个按钮几次,它应该从头开始重复声音。如果我之后按下另一个按钮,运行声音将停止,以便为新按钮“腾出空间”。
我使用的代码:
-(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 所有声音。
【问题讨论】:
标签: ios objective-c audio avaudioplayer