芬奇使用OpenAL。但是,当我有一个声音实例,并说 - 播放时,声音会播放。当我以快节奏的方式一个接一个地多次调用-play时,每次播放都会使该声音的当前声音播放停止并重新启动。
这不是我想要的。我是否必须创建多个源或缓冲区才能使其正常工作?或者我只是用同一个文件实例化多个声音?
答案 0 :(得分:2)
这个用例完全有一个RevolverSound
类。它非常简单,它事先分配了许多Sound
个实例,然后轮流播放它们:
- (void) play
{
[[sounds objectAtIndex:current] play];
current = (current + 1) % [sounds count];
}
这意味着可以同时播放的声音存在硬限制,并且内存使用量会随着该限制而上升。我没有发现这在实践中是一个大问题,因为当有五个或更多的声音一次播放时,已经有这样的声音混乱,你通常不会注意到第一个没有播放到最后再开始之前。