2011-10-25 16 views
2

私はiPhoneとiPadのためのゲームをcocos2dを使って開発しています。別のものが完了したら正確に音を出す必要があります。 私は、小さな曲に細かく切り刻まれたサウンドトラックを持っています.1つの曲が終わると再生が始まり、再生が始まるまでの間に最も小さなギャップができる余裕がありません。iPhoneで完全に音を再生

Btw。私は単一のファイルに一緒に音を接着することはできませんし、ファイルの順序が実行時に並べ替えられるので、ちょうどそれを再生します。

どうすればこの問題を解決できますか?

答えて

2

はCocosDenshionを使用すると、バックグラウンドミュージックが終了するたびに、このデリゲートが呼び出されます

[[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:self 
             selector:@selector(musicDidFinish)]; 

CDAudioManager class reference

でデリゲートを登録することができます。これはもちろん、サウンドファイルをバックグラウンドミュージック(playBackgroundMusicメソッド)で再生する場合にのみ機能します。

これがうまくいかない場合は、ObjectALをご覧ください。より多くの選択肢と柔軟性が得られます。たとえば、ALSourceを使用すると、サウンドファイルを表す複数のALBufferオブジェクトをキューに入れることができます。つまり、ソースのバッファーカウントが1に減少すると、次のバッファーをキューに入れるだけで、連続した複数のサウンドファイル(任意のフォーマット)を連続して再生できます。

ObjectALはすごく素晴らしいです(これは私がそうだと思います:))Kobold2Dには含まれています。

+0

お返事ありがとうございました!私はsetBackgroundMusicCompletionListenerのコールバックで別のサウンドを再生しようとしましたが、それだけでは十分ではありません。私は音楽を演奏しているので、少し遅れが目立つでしょう。私はバックグラウンドサウンドもあらかじめロードしていたので、うまく動作しません。 –

+0

私はあなたの他のヒントをしようとします:) –

+0

ありがとう! ALSourceとALBufferでObjectALを使っていました。さまざまなバッファを作成し、それらをキューイングしてトリックを行った:) –

0

単一のオーディオキューまたはRemoteIOオーディオユニットを使用して、任意のファイルから任意の順序でraw/PCMオーディオサンプルをコールバックバッファに書き込むことができます。

関連する問題