iPhone, AVAudioPlayer и множественные звуки - PullRequest
0 голосов
/ 06 июля 2010

Я новый разработчик и создаю свое первое приложение для iPhone, и я хочу сделать кнопку для включения / выключения нескольких звуков, например, когда я нажимаю кнопку для нескольких звуков, после того, как я играю звуки, он воспроизводит все звуки одновременно, и если его отключение может воспроизводить только один звук, какой код должен включить / выключить воспроизведение нескольких звуков?

Извините за мой плохой английский , Танки!

1 Ответ

1 голос
/ 06 июля 2010

Сания,

Для одновременного воспроизведения нескольких звуков Apple рекомендует использовать формат .caf с аппаратным декодированием. Кроме того, вы просто создаете новый объект AVAudioPlayer для каждого звукового файла вместо повторного использования одного и того же объекта в случае, когда вы хотите, чтобы одновременно воспроизводился только один звук.

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

http://developer.apple.com/iphone/library/documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html

http://www.mobileorchard.com/easy-audio-playback-with-avaudioplayer/

// a function I use to play multiple sounds at once
- (void)playOnce:(NSString *)aSound {

// Gets the file system path to the sound to play.
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:aSound ofType:@"caf"];  

// Converts the sound's file path to an NSURL object
NSURL *soundURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
self.soundFileURL = soundURL;
[soundURL release];

AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error:nil];  
self.theAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded

[newAudio release]; // release the audio safely

// buffers data and primes to play
[theAudio prepareToPlay];

// set it up and play
[theAudio setNumberOfLoops:0];
[theAudio setVolume: volumeLevel];
[theAudio setDelegate: self];
[theAudio play];

}
...