Reproducción de muestras de sonido en el iPhone
Pregunta
He llegado al punto en el que quiero jugar algunas muestras en mi juego / aplicación. Mi instinto dice que el uso de OpenAL ... voy a tener la situación en la que tendrá que jugar varias muestras a la vez (sin embargo no más de 2 o 3) y las muestras serán cortas (2 o 3 segundos).
Mi pregunta es ¿cuál es la mejor manera de jugar muestras en el iPhone, dado que los criterios?
Solución
Este es un fragmento de código de ejemplo que estoy utilizando:
primera opción:
he definido esto en mi archivo .h
SystemSoundID topClick;
Y en mi archivo .m lo firest carga el sonido (AIFF):
NSBundle* bundle = [NSBundle mainBundle];
NSString *topClickFile = [bundle pathForResource:@"top_click" ofType:@"aiff"];
A continuación, cuando quiero reproducir el sonido, yo uso:
AudioServicesPlaySystemSound(topClick);
segunda opción:
También es posible usar el AVAudioPlayer (disponible desde el firmware 2.2 creo):
NSString *graffitiSprayFile = [bundle pathForResource:@"sound_effect" ofType:@"aiff"];
AVAudioPlayer* sprayAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:graffitiSprayFile] error:NULL];
sprayAudio.delegate = self;
[sprayAudio prepareToPlay];
[sprayAudio setNumberOfLoops:999];
La primera opción es muy útil para el efecto de sonido relativamente corto.