Я вызываю playSoundFromBundle из приведенного ниже кода для воспроизведения звуков (aif-файлов). У меня есть звук, который делает один щелчок, а затем затухающий звук. Оба звука находятся в одном файле. Иногда я получаю два клика и затем исчезаю. Смысл, щелкни, щелкни ... исчезнуть. Один клик не то, что должно играть. Я предполагаю, что звук начинается (звук щелчка), прерывается и затем перезапускается (полный звук ... щелчок / затухание) из-за другой обработки, которая может продолжаться. Кажется случайным, когда это произойдет. Я поставил звук на собственную нить, чтобы избежать двойного щелчка. Что еще я могу сделать, чтобы звук воспроизводился правильно?
- (void) playSoundFromBundleThreaded:(NSArray*)arr{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *fileName = (NSString*)[arr objectAtIndex:0];
NSString *fileExt = (NSString*)[arr objectAtIndex:1];
NSError *err;
AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: fileName ofType: fileExt inDirectory:@"/"]] error: &err];
self.audioPlayer = newPlayer;
self.audioPlayer.numberOfLoops = 0;
self.audioPlayer.volume = .5;
if (self.audioPlayer == nil)
{
NSLog(@"Problem initializing Sound - %@", [err description]);
}
else
{
[self.audioPlayer play];
}
[newPlayer release];
[pool release];
}
- (void) playSoundFromBundle:(NSString*)fileName fileExtension:(NSString*)fileExt{
NSArray *arr = [NSArray arrayWithObjects:fileName, fileExt, nil];
[NSThread detachNewThreadSelector: @selector(playSoundFromBundleThreaded:) toTarget:self withObject:arr];
}