iphone – 在OpenAL中播放声音时收到通知

我在iPhone上使用OpenAL同时播放多个音频样本.

我可以让OpenAL在单个样本播放时通知我吗?

我想避免硬编码样本长度和设置计时器.

如果你把OpenAL源抽象成一个类,我猜你可以简单地调用performSelector:afterDelay:当你启动声音时:

- (void) play
{
    [delegate performSelector:@selector(soundHasFinishedPlaying)
        afterDelay:self.length];
    …
}

(如果在此期间手动停止声音,可以取消回调,请参阅NSObject Class Reference.)或者您可以轮询AL_SOURCE_STATE:

- (void) checkStatus
{
    ALint state;
    alGetSourcei(source, AL_SOURCE_STATE, &state);
    if (state == AL_PLAYING)
        return;
    [timer invalidate];
    [delegate soundHasFinishedPlaying];
}

我不知道如何让OpenAL给你回电话.你究竟想要回调的是什么?如果没有回调,有些事情可以更好地解决.

相关文章
相关标签/搜索