如何在声音完成时获得回调

时间:2014-08-05 11:05:56

标签: xcode

如何在声音完成时获得回调

大家好,我希望有人可以帮我使用回调块 我正在使用Nick Lockwood的Soundmanager类来控制我应用中的声音播放 https://github.com/nicklockwood/SoundManager

我试过这个我知道它错了,但我不明白如何将完成处理程序链接到特定的声音

 -(void)playSound
 {
    [[SoundManager sharedManager] playSound:@"Pop.caf" looping:NO];
    if (SoundDidFinishPlayingNotification) {
    soundNamed.completionHandler(YES);

}

}

感谢

2 个答案:

答案 0 :(得分:1)

只需设置SoundManager的{​​{1}}属性:

completionHandler
  

声音结束播放时将调用的回调块,   或者被停止了。任何一个@property (nonatomic, copy) SoundCompletionHandler completionHandler; 块都只能设置   给定completionHandler实例,但如果需要多个对象来跟踪   Sound的状态,您可以添加观察者   而是Sound通知。

如上所述,您还可以收听SoundDidFinishPlayingNotification通知。

答案 1 :(得分:0)

我知道这个问题已经过时了,但我今天也有同样的问题并且想出来了。所以也许这仍然可以帮助某些人。

以下是使用nicklockwood的SoundManager中的completionhandler的示例。

如果你在这里查看github代码:https://github.com/nicklockwood/SoundManager/blob/master/SoundManager/SoundManager.m#L51,你会注意到除了SoundManager之外还有一个Sound接口。完成处理程序位于Sound对象上,SoundManager playSound方法可以采用字符串文件名或声音对象本身。为了使用完成处理程序块,我们需要使用声音对象。 (请记住导入SoundManager.h

您就是这样做的:

Sound *sound = [Sound soundNamed:@"quack.caf"];
sound.completionHandler = ^(BOOL didFinish) {
    if (didFinish) {
        NSLog(@"sound finished");
    }
};
[[SoundManager shareInstance] playSound:sound];