有没有完成与雀科的回放?类似于 - audioPlayerDidFinishPlaying avaudioplayer的东西?通过代码查找我找不到引用它的任何内容。
答案 0 :(得分:1)
Finch中没有这样的回调,因为OpenAL不支持它。 (或者至少它在我上次看的时候不支持它。)你可以这样假装它:
- (void) playSoundWithCallback {
[someSound play];
[someDelegate performSelector:@selector(soundDidFinishPlaying:)
withObject:someSound afterDelay:someSound.duration];
}
我没有尝试过,但这是一个简单的代码,应该可以正常工作。嗯......至少在你开始搞乱音高并因此声音速度之前:)
答案 1 :(得分:0)
答案 2 :(得分:0)
如果你不关心中断,这是一个修正音调的黑客。
当音高不是1.0时,OpenAL会改变播放声音的播放长度。 (似乎无法从OpenAL查询这个新长度, 因为AL参数返回与之前相同的值)
音高范围从0.5到2.0f。所以,如果我们假设0.5的音高恰好是两倍, 并且在2.0处的音高是准确的一半,我们应该能够使用音高作为乘法器:
- (void) playSoundWithCallback {
[someSound play];
[someDelegate performSelector:@selector(soundDidFinishPlaying:)
withObject:someSound afterDelay: someSound.duration * (1.0/someSound.pitch) ];
}