Si ha la fuente OpenAL abstraído en una clase, supongo que se puede llamar simplemente performSelector:afterDelay:
cuando se inicia el sonido:
- (void) play
{
[delegate performSelector:@selector(soundHasFinishedPlaying)
afterDelay:self.length];
…
}
(Si se detiene el sonido manualmente, mientras tanto, la devolución de llamada puede ser cancelado, ver el NSObject Class Reference) o puede consultar la AL_SOURCE_STATE
:.
- (void) checkStatus
{
ALint state;
alGetSourcei(source, AL_SOURCE_STATE, &state);
if (state == AL_PLAYING)
return;
[timer invalidate];
[delegate soundHasFinishedPlaying];
}
no saben cómo pasar OpenAL le devuelva la llamada. ¿Para qué quieres exactamente la devolución de llamada? Algunas cosas se pueden resolver mejor sin una devolución de llamada.
Esta pregunta tiene 5 años en este punto, pero para los principiantes de OpenAL como yo, ahora hay un AP de Objective-C para OpenAL, y una clase en el proyecto de demostración ('SourceNotificationsDemo') que demuestra esta funcionalidad. – livingtech
@livingtech ¿podría proporcionar un enlace? – Zorayr
Proyecto aquí: https://github.com/kstenerud/ObjectAL-for-iPhone – livingtech