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