Эй У меня есть пара 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 для каждого звука, но это сделало бы какой-то ужасный код! Любые идеи о том, как сделать этот процесс быстрее?
Спасибо, Алекс
EDIT: играть 2 различных звуков отлично работает, я не могу слышать задержку между ними, как я prepareToPlay
все звуки заранее.
Спасибо за подробный ответ, я буду отмечать за усилия. Похоже, мне нужно читать себя в материалах AUGraph:/Кроме того, благодаря всем этим материалам, связанным с музыкой, но я сам продюсер, и я знаю, что делаю, но, к сожалению, я лучше занимаюсь музыкой, чем я нахожусь в кодировании ха-ха – user2875404