Cocos2d-x で効果音の同時再生数を上げる
Cocos2d-x を使用して効果音を同時に再生した場合に Android では5音が上限となります。
この上限をあげる方法です。
Cocos2dx の修正
Cocos2dx の SimpleAudioEngine は Android の効果音再生に SoundPool を使用しています。SoundPool はひとつのインスタンスで複数の音を再生するのですが、インスンス生成時に最大数を決めて生成します。今回はこのインスンス生成時の最大数を変更します。
下記行が SoundPool の同時再生数になるので、この値を修正する。デフォルトでは 5 になっています。
android/src/org/cocos2dx/lib/Cocos2dxSound.java
private static final int MAX_SIMULTANEOUS_STREAMS_DEFAULT = 5;
ただやみくもに数を多くするとメモリが厳しくなってきます。SoundPool はロード時にデコードしてメモリに展開します。そのために再生時のレスポンスがよい利点があるのですが、ロードに時間がかかるのとメモリをそれなりに消費します。そのためにメモリは要注意です。再生しない音声ファイルは使用後は解放した方がよいです。
フォーマット
iOS と Android で再生するために wav または ogg 。
再生時間
ひとつのファイルの再生時間を 10秒以内(SoundPool の上限値)にする(Androidのみ)
再生時の注意
SimpleAudioEngine::preloadEffect で予め音声ファイルをロードしておき、
SimpleAudioEngine::playEffect で再生する。
SimpleAudioEngine::unloadEffect で音声ファイルを解放する。
※ SoundPool はデコードしてメモリに展開するため、ロードに時間がかかる。ロード完了前に playEffect しても再生されない。
関連する投稿
One comment
コメントをどうぞ
Additional comments powered by BackType
2residence…
…