DXライブラリで、BGMをフェードインする関数を作っています。
まず、LoadSoundMem()でmp3音楽を読み込みます。
最初のボリュームを
ChangeVolumeSoundMem()で0に設定してから、
その音楽を再生し、
そこから、変数を使ってボリュームを少しずつ255まで上げていきます。
理論上、これでフェードインできるはずなんですが、
音楽が一向に鳴らないんです。(エラーが出てプログラムが止まることもありません。鳴らないまま進んでいきます。)
最初から、ボリュームを255のままで再生すれば、音楽は鳴るので、
ロードに問題はないはずなんです。
どういうことなんでしょう?
BGMのフェードイン
- bitter_fox
- 記事: 607
- 登録日時: 14年前
- 住所: 大阪府
Re: BGMのフェードイン
ソースコードがないと判断できないので、再生部分のソースコードを載せていただけないでしょうか?yussanstar さんが書きました: 最初のボリュームを
ChangeVolumeSoundMem()で0に設定してから、
その音楽を再生し、
そこから、変数を使ってボリュームを少しずつ255まで上げていきます。
理論上、これでフェードインできるはずなんですが、
音楽が一向に鳴らないんです。(エラーが出てプログラムが止まることもありません。鳴らないまま進んでいきます。)
(載せる際にはcodeタグで囲っていただきますようにお願いします。)
(codeタグについてはこちらを参考になさってください。
http://dixq.net/board/board.html#k10)
Re: BGMのフェードイン
すいません。コードを載せさせていただきます。
この関数を、1を返すまで、メインループで回します。
グローバル変数として、BGMNowVolumeを用いています。
最初は、音がなっていないので、この値は0から始め、
255まで上げていきます。
また、BGMHandle[ID]には、あらかじめmp3ファイルを読み込みます。
引数rateには、1以上の値を入れます。
ご返答お待ちしております。
int BGMFadeIn(int ID, int rate){
SetVolumeSoundMem(BGMNowVolume,BGMHandle[ID]);
if(BGMNowVolume==255)
return 1;
if(BGMNowVolume==0){
PlaySoundMem(BGMHandle[ID],DX_PLAYTYPE_LOOP);
}
BGMNowVolume += rate;
if(BGMNowVolume>255)
BGMNowVolume=255;
return 0;
}
グローバル変数として、BGMNowVolumeを用いています。
最初は、音がなっていないので、この値は0から始め、
255まで上げていきます。
また、BGMHandle[ID]には、あらかじめmp3ファイルを読み込みます。
引数rateには、1以上の値を入れます。
ご返答お待ちしております。
Re: BGMのフェードイン
メインループ部分のコードも載せてください。