我有一个应用程序,它有两种声音: 1. 背景声音,一直循环到下一个视图。2. 可以单独播放或一次性播放的声音片段。
以前我尝试使用 AVAudioPlayer 但两个剪辑之间总是有一个很小的静音间隔(我没有找到任何解决方案,如果你有一个,请回复),所以转移到 Finch 例如http://github。 com/zoul/Finch/tree/master
现在是交易:我使用 AVAudioPlayer 播放永远循环的声音,而 Finch 播放那些背靠背的剪辑。我正在这样做:
- (void)viewDidLoad {
[super viewDidLoad];
soundEngine = [[Finch alloc] init];
/***
CLIPPED
***/
}
-(void) playclip:(id) sender {
NSString *fullPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"sitar.wav"];
NSLog(@"Song is %@", fullPath);
clip = [[Sound alloc] initWithFile:fullPath];
NSLog(@"Clip Length: %@", clip.length);
NSLog(@"Clip Playing ? : %d", clip.playing);
[clip play];
NSLog(@"Played Clip");
}
这与 git 存储库中提供的演示项目的代码几乎相同。但由于某种原因,我在控制台上得到了这个:
Song is /Users/shoaibi/Library/Application Support/iPhone Simulator/User/Applications/17FBA26F-6047-4D56-9E45-ADAFE07B7234/Test.app/sitar.wav
Failed to create OpenAL source, error code a004.
Clip Length: (null)
Clip Playing ? : 0
Played Clip
控制台上打印的目录上的 ls 显示那里有具有正确权限的 Sitar.wav。可能是什么问题?可能是我停止使用的背景声音 AVAudioPlayer:
- (void)viewWillAppear:(BOOL)animated {
//Stop the background music before my ears bleed :P
d = [[UIApplication sharedApplication] delegate];
if (d.bg.playing)
{
[d.bg stop];
NSLog(@"Background music stoped");
}
}
是不是在释放声音资源?