0

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

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

4

1 回答 1

2

有一个RevolverSound专门针对这个用例的类。很简单,它Sound预先分配了多个实例,然后轮流播放它们:

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

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

于 2010-05-03T18:41:25.847 回答