龍神録 ポーズ中の効果音について
龍神録 ポーズ中の効果音について
こんにちは。龍神録50章をいじってます。
今度は支館様の一時停止のときにどうしても解決出来ない問題があったので
質問させていただきました。
一時停止の判定を押した瞬間に
StopSoundMem(area.bgm.handle); //音楽を止める
で音楽を止め
一時停止を解除した瞬間に
PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE ); //音楽を鳴らす
で音楽を開始するようにしてます。
この一時停止中に選択肢を選んでいるときに
効果音を鳴らしたいのですが、鳴りません。
多分StopSoundMemで音楽を止めてるから
効果音が鳴らなくなってしまっているのだと考えているのですが、
どうしたら、メインBGMはストップ&効果音が鳴るようになるでしょうか?
アドバイスお願いします
今度は支館様の一時停止のときにどうしても解決出来ない問題があったので
質問させていただきました。
一時停止の判定を押した瞬間に
StopSoundMem(area.bgm.handle); //音楽を止める
で音楽を止め
一時停止を解除した瞬間に
PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE ); //音楽を鳴らす
で音楽を開始するようにしてます。
この一時停止中に選択肢を選んでいるときに
効果音を鳴らしたいのですが、鳴りません。
多分StopSoundMemで音楽を止めてるから
効果音が鳴らなくなってしまっているのだと考えているのですが、
どうしたら、メインBGMはストップ&効果音が鳴るようになるでしょうか?
アドバイスお願いします
Re:龍神録 ポーズ中の効果音について
すみません。まったく原因が分からないので、 control.cpp内のどこが原因なのか見てもらえないでしょうか? ついでに、一時停止中にZボタンを押すと、メイン画面内が真っ暗になるバグも発生してて 参ってます・・・ void MenuDraw(){ //背景を暗く SetDrawBlendMode( DX_BLENDMODE_ALPHA , 80 ); DrawBox( FX , FY , FX+FMX , FY+FMY , color[1] , TRUE ); SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ); //タイトル表示 if(game_pause==0){ //一時停止を解除する DrawBox(FX+35,FY+310,FX+225,FY+330,color[0],TRUE); //四角形(白) } if(game_pause==1){ //タイトルへ戻る DrawBox(FX+35,FY+340,FX+225,FY+360,color[0],TRUE); //四角形(白) } if(game_pause==2){ //リプレイを保存して終了 DrawBox(FX+35,FY+370,FX+225,FY+390,color[0],TRUE); //四角形(白) } if(game_pause==3){ //最初からやり直す DrawBox(FX+35,FY+400,FX+225,FY+420,color[0],TRUE); //四角形(白) } DrawGraph(FX+10,FY+260,img_board[16],TRUE); //一時停止用 //キャプチャした画像の開放 if( CheckStatePad(configpad.shot) == 1 ){ DeleteGraph( img_screen ); } } //一時停止 void game_stop(){ MenuDraw(); switch(game_pause){ case 0: //一時停止を解除する if(CheckStateKey(KEY_INPUT_UP)==1){ se_flag[42]=1; //カーソル音 game_pause =3; //表示を3にする(最初からやり直すへ移動) } if(CheckStateKey(KEY_INPUT_DOWN)==1){ game_pause =1; //表示を1にする(タイトルへ戻るへ移動) se_flag[42]=1; //カーソル音 } if(CheckStatePad(configpad.shot)==1){ if(ch.story_flag == 0){ //ゲームメインなら PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE ); //音楽を鳴らす func_state = 100; //メインに戻る } if(ch.story_flag == 1){ //ノベル中なら PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE ); //音楽を鳴らす func_state = 103; //ノベルに戻る } se_flag[44]=1; //決定音 } break; case 1: //タイトルへ戻る if(CheckStateKey(KEY_INPUT_UP)==1){ game_pause =0; //表示を0にする(一時停止を解除するへ移動) se_flag[42]=1; //カーソル音 } if(CheckStateKey(KEY_INPUT_DOWN)==1){ game_pause =2; //表示を2にする(リプレイを保存して終了へ移動) se_flag[42]=1; //カーソル音 } if(CheckStatePad(configpad.shot)==1){ func_state = 3; //タイトル前の初期化へ se_flag[44]=1; //決定音 } break; case 2: //リプレイを保存して終了 if(CheckStateKey(KEY_INPUT_UP)==1){ game_pause =1; //表示を1にする(タイトルへ戻るへ移動) se_flag[42]=1; //カーソル音 } if(CheckStateKey(KEY_INPUT_DOWN)==1){ game_pause =3; //表示を3にする(最初からやり直すへ移動) se_flag[42]=1; //カーソル音 } //if(CheckStatePad(configpad.shot)==1){ // se_flag[43]=1; //選択できない音 //} break; case 3: //最初からやり直す if(CheckStateKey(KEY_INPUT_UP)==1){ game_pause =2; //表示を2にする(リプレイを保存して終了へ移動) se_flag[42]=1; //カーソル音 } if(CheckStateKey(KEY_INPUT_DOWN)==1){ game_pause =0; //表示を0にする(一時停止を解除するへ移動) se_flag[42]=1; //カーソル音 } if(CheckStatePad(configpad.shot)==1){ func_state = 99; //ゲーム初期化 delete_bgm(); //BGM初期化 se_flag[44]=1; //決定音 } break; default: printfDx("不明なgame_pause\n"); break; } }
Re:龍神録 ポーズ中の効果音について
続き //コンテニューは省略 //制御中の処理に応じた対応へ void control_main(){ switch(func_state){ case 100: //メインゲーム //Escが押されたかつ、ボードがフェードインしてないかつ、クリア処理を行ってなければ if(CheckStateKey(KEY_INPUT_ESCAPE)==1&&board.flag==1&&clear.flag==0){ //ここで画面をキャプチャ(スクリーンショットを撮る) img_screen = MakeGraph( 640 , 480 ) ; GetDrawScreenGraph( 0 , 0 , 640 , 480 , img_screen ) ; ch.story_flag = 0; ch.pause_cnt = 0; game_pause = 0; StopSoundMem(area.bgm.handle); //音楽を止める func_state =101; //一時停止処理へ } if( ch.num < 0){ //残機0なら //ここで画面をキャプチャ(スクリーンショットを撮る) img_screen = MakeGraph( 640 , 480 ) ; GetDrawScreenGraph( 0 , 0 , 640 , 480 , img_screen ) ; ch.story_flag = 0; ch.pause_cnt = 0; StopSoundMem(area.bgm.handle); //音楽を止める func_state =102; //コンティニューへ } break; case 101: //一時停止 game_stop(); if(CheckStateKey(KEY_INPUT_ESCAPE)==1){ if(ch.story_flag == 0){ //ゲームメインなら PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE ); //音楽を鳴らす func_state = 100; //メインに戻る DeleteGraph( img_screen ); //キャプチャ画像の開放 } if(ch.story_flag == 1){ //ノベル中なら PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE ); //音楽を鳴らす func_state = 103; //ノベルに戻る DeleteGraph( img_screen ); //キャプチャ画像の開放 } } break; case 102: //コンティニュー game_continu(); break; case 103: //サウンドノベル if(CheckStateKey(KEY_INPUT_ESCAPE)==1){ img_screen = MakeGraph( 640 , 480 ) ; GetDrawScreenGraph( 0 , 0 , 640 , 480 , img_screen ) ; ch.story_flag = 1; StopSoundMem(area.bgm.handle); //音楽を止める func_state = 101; //一時停止処理へ } if( ch.num < 0){ //残機0なら img_screen = MakeGraph( 640 , 480 ) ; GetDrawScreenGraph( 0 , 0 , 640 , 480 , img_screen ) ; ch.story_flag = 1; StopSoundMem(area.bgm.handle); //音楽を止める func_state = 102; //コンティニューへ } default: break; } }
Re:龍神録 ポーズ中の効果音について
>>ひよこさん >se_flag[42]に音楽が読み込まれていますか? >music_playは通っていますか? 読み込まれてます。また、通ってます。 念のため、違う個所で 例えばse_flag[42]=1;//カーソル音 を鳴らしてみたところ、ちゃんと鳴りました。 >>Dixq (管理人)さん >フラグは立てていると思いますが、たてたフラグのサウンドを鳴らす処理はしていますか? music.cpp内の void music_play(){ int i; for(i=0;i<SE_MAX;i++){ if(se_flag==1){ if(CheckSoundMem(sound_se)!=0){ if(i==8)continue; StopSoundMem(sound_se); } PlaySoundMem(sound_se,DX_PLAYTYPE_BACK); } } } で処理をしてるので、鳴ります。 プログラムのほうは問題ないのでしょうか?
Re:龍神録 ポーズ中の効果音について
呼び出し元でこの関数が呼び出されていないという事はないですか?
一切合財コンパイル出来る形でアップローダなどにアップロードしてもらった方がよさそうな気がしますが・・。
一切合財コンパイル出来る形でアップローダなどにアップロードしてもらった方がよさそうな気がしますが・・。
Re:龍神録 ポーズ中の効果音について
>メイン画面内が真っ暗になるバグも発生してて
>参ってます・・・
多分これが原因?
//キャプチャした画像の開放
if( CheckStatePad(configpad.shot) == 1 ){
DeleteGraph( img_screen );
}
>参ってます・・・
多分これが原因?
//キャプチャした画像の開放
if( CheckStatePad(configpad.shot) == 1 ){
DeleteGraph( img_screen );
}