ページ 1 / 1
BGMのON,OFFについて
Posted: 2013年5月31日(金) 11:23
by matukikun
龍神録をみて勉強中のものです。
「BGMを流してみよう」で流すことは可能なのですが自分で追加しているポーズ画面やゲームオーバー画面に行くときに音声を止めて再生しなおすと音が最初からになってしまいます。
流れとしてはESCキーが押されるとmainループ内の新たに追加したfunc_stateの値を代入し、ポーズ関数などに入っています。ポーズからゲームを再開させるとBGMを途中から始まるようにしたいのですが、何か方法がわかる、アドバイスを下さる方がいましたらよろしくお願いします。
ポーズ関数はこのような感じです。
コード:
void pause(){
int wh=GetColor(255,255,255),i;
DrawFormatString(200,450,wh,"zキーでゲームに戻る xキーでタイトルへ");
StopSoundMem(area.bgm.handle);
if(CheckStatePad(configpad.shot)==1){
func_state=100;
PlaySoundMem(area.bgm.handle,DX_PLAYTYPE_LOOP);
}
if(CheckStatePad(configpad.bom)==1){
func_state=90;
}
}
Re: BGMのON,OFFについて
Posted: 2013年5月31日(金) 12:47
by naohiro19
- 現在のサウンドが再生中であるかどうかを調べる
- 再生中である場合 GetCurrentPositon で現在のサウンドの再生位置を取っておきます。StopSoundMemで
- ポーズ画面から戻る際に、SetCurrentPositon で GetCurrentPositon で取得した再生位置を指定し、PLaySoundMemで再生する。
Re: BGMのON,OFFについて
Posted: 2013年5月31日(金) 16:46
by matukikun
naohiro19さんありがとうございます。
naohiro19さんの返信を見ながらいろいろと試した結果、
コード:
void pause(){
int wh=GetColor(255,255,255);
DrawFormatString(200,450,wh,"zキーでゲームに戻る xキーでタイトルへ");
StopSoundMem(area.bgm.handle);
if(CheckStatePad(configpad.shot)==1){
func_state=100;
PlaySoundMem(area.bgm.handle,DX_PLAYTYPE_LOOP,false);
}
if(CheckStatePad(configpad.bom)==1){
func_state=90;
}
}
のような形でうまくいきました。playsoundmemの頭から再生するフラグが原因だったのだと思います。
この形で行こうと思っていますが、この形だと何か問題がある、バグが出る等、心当たりがもしありましたら教えて頂きたいです。
Re: BGMのON,OFFについて
Posted: 2013年5月31日(金) 21:33
by matukikun
解決をつけるのを忘れていました。