トップページ > 記事閲覧
ChangeVolumeSoundMem()
名前:rio 日時: 2014/09/10 23:11

ChangeVolumeSoundMem関数がうまく動作しない状況に遭遇して 解決方法が見当たらず困ってしまったので…。 プログラム内に設けた BGMとSEを読み込むそれぞれのルーチンにおいて、 BGMにはChangeVolumeSoundMemが正しく作用するのに対し、 SEには作用しません。 @BGM 必要(再生)時にのみBGMを読み込み、ループポイントやボリュームを 設定し、再生する関数を作成しこれを利用。 ASE プログラムの最初に初期化として、プログラムで使用するファイルを 全て(7〜80くらい)読み込み、配列へ格納。その後、 forループでChangeVolumeSoundMemを繰り返し呼び出して設定。 以上の処理に対して、 BGM部分についてはボリュームが反映されるのですが、 SE部分については反映されません。 どちらも音声ファイルを読み込むだけなので 本質的には変わらないはずなのですが、読み込んだSEファイルに対して ChangeVolumeSoundMemを呼び出すと、いずれも-1が返ってくるようです。 (通常設定の)Logには特にエラーメッセージも見当たりません。 なお、再生はどちらも問題なくできます。
メンテ

Page: 1 |

Re: ChangeVolumeSoundMem() ( No.1 )
名前:管理人 日時:2014/09/13 11:47

ChangeVolumeSoundMem が -1 を返すのはサウンドハンドルが無効な場合と、 サウンドの非同期読み込みが完了していない場合の二通りがあります SetUseASyncLoadFlag( TRUE ) ; を実行した状態で LoadSoundMem を実行して、 非同期読み込みで SE を読み込み始めた直後に ChangeVolumeSoundMem を 呼び出していたりしませんでしょうか?
メンテ
Re: ChangeVolumeSoundMem() ( No.2 )
名前:rio【解決】 日時:2014/09/15 18:26

>>サウンドの非同期読み込みが完了していない場合の二通りがあります このケースによる-1はちょっと意識から外れていました。 実際に、ChangeVolumeSoundMem の呼び出しを 非同期読み込みルーチンの後に持ってくると解消されました。 ありがとうございます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存