BGMのON,OFFについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
matukikun
記事: 9
登録日時: 12年前

BGMのON,OFFについて

#1

投稿記事 by matukikun » 12年前

龍神録をみて勉強中のものです。
「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;
}
}

naohiro19
記事: 256
登録日時: 14年前
住所: 愛知県

Re: BGMのON,OFFについて

#2

投稿記事 by naohiro19 » 12年前

  1. 現在のサウンドが再生中であるかどうかを調べる
  2. 再生中である場合 GetCurrentPositon で現在のサウンドの再生位置を取っておきます。StopSoundMemで
  3. ポーズ画面から戻る際に、SetCurrentPositon で GetCurrentPositon で取得した再生位置を指定し、PLaySoundMemで再生する。

matukikun
記事: 9
登録日時: 12年前

Re: BGMのON,OFFについて

#3

投稿記事 by matukikun » 12年前

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の頭から再生するフラグが原因だったのだと思います。
この形で行こうと思っていますが、この形だと何か問題がある、バグが出る等、心当たりがもしありましたら教えて頂きたいです。

matukikun
記事: 9
登録日時: 12年前

Re: BGMのON,OFFについて

#4

投稿記事 by matukikun » 12年前

解決をつけるのを忘れていました。

閉鎖

“C言語何でも質問掲示板” へ戻る