ページ 1 / 1
BGMのフェードイン
Posted: 2011年2月05日(土) 23:54
by yussanstar
DXライブラリで、BGMをフェードインする関数を作っています。
まず、LoadSoundMem()でmp3音楽を読み込みます。
最初のボリュームを
ChangeVolumeSoundMem()で0に設定してから、
その音楽を再生し、
そこから、変数を使ってボリュームを少しずつ255まで上げていきます。
理論上、これでフェードインできるはずなんですが、
音楽が一向に鳴らないんです。(エラーが出てプログラムが止まることもありません。鳴らないまま進んでいきます。)
最初から、ボリュームを255のままで再生すれば、音楽は鳴るので、
ロードに問題はないはずなんです。
どういうことなんでしょう?
Re: BGMのフェードイン
Posted: 2011年2月06日(日) 00:02
by bitter_fox
yussanstar さんが書きました:
最初のボリュームを
ChangeVolumeSoundMem()で0に設定してから、
その音楽を再生し、
そこから、変数を使ってボリュームを少しずつ255まで上げていきます。
理論上、これでフェードインできるはずなんですが、
音楽が一向に鳴らないんです。(エラーが出てプログラムが止まることもありません。鳴らないまま進んでいきます。)
ソースコードがないと判断できないので、再生部分のソースコードを載せていただけないでしょうか?
(載せる際にはcodeタグで囲っていただきますようにお願いします。)
(codeタグについてはこちらを参考になさってください。
http://dixq.net/board/board.html#k10)
Re: BGMのフェードイン
Posted: 2011年2月08日(火) 21:39
by yussanstar
すいません。コードを載せさせていただきます。
コード:
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;
}
この関数を、1を返すまで、メインループで回します。
グローバル変数として、BGMNowVolumeを用いています。
最初は、音がなっていないので、この値は0から始め、
255まで上げていきます。
また、BGMHandle[ID]には、あらかじめmp3ファイルを読み込みます。
引数rateには、1以上の値を入れます。
ご返答お待ちしております。
Re: BGMのフェードイン
Posted: 2011年2月08日(火) 21:52
by h2so5
メインループ部分のコードも載せてください。