2010-05-03 36 views
0

Finch使用OpenAL。然而,当我有一个声音的实例,并说 - 播放,声音播放。当我以一种快节奏的方式一个接一个地播放多个电话时,每个播放都会使该声音的当前声音播放停止并重新启动。如何使用OpenAL或Finch多次重叠播放相同的声音?

这不是我想要的。我是否需要创建多个来源或缓冲区才能运行?或者我会用相同的文件实例化多个声音?

回答

2

有一个RevolverSound类正是为这个用例。这很简单,它分配一个号码事先Sound实例,然后播放它们旋转:

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

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

+0

我的错。我误解了这个例子。你不知道有多少次“左轮手枪”必须射击。它确实重叠很好。很酷的东西。谢谢Tomáš! – dontWatchMyProfile 2010-05-03 18:51:22

+0

一般来说,使用RevolverSound实例而不是Sound的开销是多少?如果我总是将RevolverSound用于任何事情,那么这会伤害吗?只是为了我可能想要重叠的情况? – dontWatchMyProfile 2010-05-03 18:52:17