如何在声音完成时获得回调
大家好,我希望有人可以帮我使用回调块 我正在使用Nick Lockwood的Soundmanager类来控制我应用中的声音播放 https://github.com/nicklockwood/SoundManager
我试过这个我知道它错了,但我不明白如何将完成处理程序链接到特定的声音
-(void)playSound
{
[[SoundManager sharedManager] playSound:@"Pop.caf" looping:NO];
if (SoundDidFinishPlayingNotification) {
soundNamed.completionHandler(YES);
}
}
感谢
答案 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];