Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(ゲームの音声について)
閲覧数:778
掲示板(ゲームの音声について)
名前
匿名
題名 ゲームの音声について
質問内容

質問を評価する
(0ポイント)
プログラム初心者です。
自作ゲームにおいて、主にSE音声で苦戦しています。

WaveファイルのSEをClipクラスで鳴らしているのですが、BGMと違ってSEは同時に複数鳴らさなくてはなりません。また、同時に鳴る数がいくつになるか分かりません。

そのため、いちいち新しくClipを作成して鳴らしていたのですが、ゲームループ中にclose処理をすると大変重くて処理落ちが発生してしまいました。
また、close処理をしないと今度はClipクラスの数がゲームが進むごとに膨大になってしまい(当たり前)、メモリをみるみる圧迫する糞ゲーになってしまいました。


こういう場合、どうするのが適切なのでしょうか。


また、clipクラスにおいて、現在再生中の音声が再生中か終了したかの判定がうまくいきません。そちらもできればご回答いただければ幸いです(isRunning()メソッドやisActive()メソッドはうまくいきませんでした)。
質問日時 2012-12-23 02:29:28
名前
匿名
回答内容

回答を評価する
(0ポイント)
コネクションプールって分かるかな。
同じ考え方でどう?
回答日時 2012-12-23 10:40:47
名前
匿名
回答内容

回答を評価する
(0ポイント)
基本は初期化時に1SE音源辺り1Clipで作成し後はそれを
 setFramePosition(0);
 start();
 stop(); (必要に応じて)
で使いまわす。
ただし、これだと同一音源を平行して再生する場合は別Clipでないと駄目なので、
最大同時発音の数を仕様として決めて(通常はハード制約で決まるが)
それに耐える分は初期化時に作成しキャッシュして使いまわす。

ゲームのメインループ内でopen closeはしない。
使いまわす上で自前でClip管理クラスを作っておくと便利。


回答日時 2012-12-25 13:50:52

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道