2010-05-03 37 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