AVAudioPlayer не правильно арендовать? - PullRequest
0 голосов
/ 24 августа 2009

Похоже, что AVAudioPlayer не повторяется. Таким образом, в следующем случае SoundFx будет проигрываться до конца, откладывать 1 секунду, затем воспроизводить снова, а не 1-секундную задержку - и желаемое в результате наложение воспроизведения:

// ...

AVAudioPlayer* soundfx = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:nil];


(void) makeSomeNoise {

  [soundfx play];
  sleep(1);
  [soundfx play];


}

Должен ли я тогда прибегнуть к NSOperation - многопоточности - для достижения моей цели перекрывающегося воспроизведения?

Примечание. Я использую формат IMA4 / ADPCM, который, по-видимому, является правильным форматом для многоуровневого воспроизведения звука.

Ура, Дуг

1 Ответ

1 голос
/ 18 ноября 2009

Это не значит, что AVAudioPlayer не является реентерабельным. Дело в том, что AVAudioPlayer начинает воспроизводить ваш звук после завершения цикла запуска, а не в вашей функции makeSomeNoise. Если вы хотите воспроизвести звук с задержкой в ​​одну секунду, вы можете сделать это:

(void) makeSomeNoise {
  [soundfx play];
  [soundfx performSelector:play withObject: nil afterDelay:1.0];
}
...