FinchはOpenALを使用しています。ただし、Soundのインスタンスがあり、-playと言うと、サウンドが再生されます。-playを次々とペースの速い方法で呼び出すと、-playごとに、そのサウンドの現在のサウンド再生が停止して再開されます。
それは私が望んでいることではありません。それを機能させるには、複数のソースまたはバッファーを作成する必要がありますか?または、同じファイルで複数のサウンドをインスタンス化するだけですか?
このユースケースにぴったりのRevolverSound
クラスがあります。非常にシンプルで、Sound
事前に多数のインスタンスを割り当ててから、順番に再生します。
- (void) play
{
[[sounds objectAtIndex:current] play];
current = (current + 1) % [sounds count];
}
これは、同時に再生できるサウンドには厳しい制限があり、その制限に伴ってメモリ使用量が増えることを意味します。一度に5つ以上のサウンドが再生されると、最初のサウンドが最後まで再生されなかったことに通常気付かないほどの音のカオスがすでに発生しているため、実際には大きな問題になるとは思いませんでした。再開する前に。