Ожидание, пока другой звук не закончится, прежде чем играть новый - PullRequest
1 голос
/ 18 апреля 2011

Я занимаюсь разработкой приложения для iPhone, которое воспроизводит звуки. Я не хочу прерывать или воспроизводить другой звук, если звук уже воспроизводится, независимо от того, откуда он был «воспроизведен». Мой код выглядит следующим образом:

if(distance <= 10)
{
   NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"wav"];
   SystemSoundID soundID;
   AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);
   AudioServicesPlaySystemSound(soundID); 
}

Просто я не хочу воспроизводить новый звук, если он уже воспроизводится.

Я не хочу ставить в очередь другой звук для воспроизведения, если он уже воспроизводится.

Возможно ли это?

1 Ответ

4 голосов
/ 18 апреля 2011

Я предлагаю вам использовать API AVAudioPlayer, а не AudioServicesPlaySystemSound.У него есть делегат, который вы можете использовать, который определяет метод -audioPlayerDidFinishPlaying: успешно: который сообщит вам, когда закончится воспроизведение вашего звука.Класс AVPlayer также имеет метод -playing, который вы можете проверить, воспроизводится ли звук в данный момент.

Итак, другими словами, сделайте это вместо:

NSError *error;
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundPath error:&error];
if(!player)
   [self doSomethingWithError:error];
[player setDelegate:self];
[player play];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...