ページ 11

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
メインループ部分のコードも載せてください。