如何使用OpenAL或Finch多次重复播放相同的声音?

时间:2010-05-03 18:25:27

标签: iphone openal finch

芬奇使用OpenAL。但是,当我有一个声音实例,并说 - 播放时,声音会播放。当我以快节奏的方式一个接一个地多次调用-play时,每次播放都会使该声音的当前声音播放停止并重新启动。

这不是我想要的。我是否必须创建多个源或缓冲区才能使其正常工作?或者我只是用同一个文件实例化多个声音?

1 个答案:

答案 0 :(得分:2)

这个用例完全有一个RevolverSound类。它非常简单,它事先分配了许多Sound个实例,然后轮流播放它们:

- (void) play
{
    [[sounds objectAtIndex:current] play];
    current = (current + 1) % [sounds count];
}

这意味着可以同时播放的声音存在硬限制,并且内存使用量会随着该限制而上升。我没有发现这在实践中是一个大问题,因为当有五个或更多的声音一次播放时,已经有这样的声音混乱,你通常不会注意到第一个没有播放到最后再开始之前。