ページ 1 / 1
龍神録 ポーズ中の効果音について
Posted: 2009年12月14日(月) 14:21
by 初心者
こんにちは。龍神録50章をいじってます。
今度は支館様の一時停止のときにどうしても解決出来ない問題があったので
質問させていただきました。
一時停止の判定を押した瞬間に
StopSoundMem(area.bgm.handle); //音楽を止める
で音楽を止め
一時停止を解除した瞬間に
PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE ); //音楽を鳴らす
で音楽を開始するようにしてます。
この一時停止中に選択肢を選んでいるときに
効果音を鳴らしたいのですが、鳴りません。
多分StopSoundMemで音楽を止めてるから
効果音が鳴らなくなってしまっているのだと考えているのですが、
どうしたら、メインBGMはストップ&効果音が鳴るようになるでしょうか?
アドバイスお願いします
Re:龍神録 ポーズ中の効果音について
Posted: 2009年12月14日(月) 15:18
by Dixq (管理人)
ハンドルの違う音楽データには影響されないと思いますよ。
何か他の原因じゃないですか?
実はファイルが読み込めてないとか
Re:龍神録 ポーズ中の効果音について
Posted: 2009年12月14日(月) 22:59
by 初心者
すみません。まったく原因が分からないので、
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:龍神録 ポーズ中の効果音について
Posted: 2009年12月14日(月) 22:59
by 初心者
続き
//コンテニューは省略
//制御中の処理に応じた対応へ
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:龍神録 ポーズ中の効果音について
Posted: 2009年12月15日(火) 17:08
by 初心者
あの・・よろしくお願いします
Re:龍神録 ポーズ中の効果音について
Posted: 2009年12月15日(火) 17:35
by ひよこ
まさか1時停止のところにbgm_main();が抜けてるって理由ですかね?
Re:龍神録 ポーズ中の効果音について
Posted: 2009年12月15日(火) 17:38
by ひよこ
上のはまちがいです。se_flag[42]に音楽が読み込まれていますか?
music_playは通っていますか?
Re:龍神録 ポーズ中の効果音について
Posted: 2009年12月15日(火) 17:50
by Dixq (管理人)
フラグは立てていると思いますが、たてたフラグのサウンドを鳴らす処理はしていますか?
Re:龍神録 ポーズ中の効果音について
Posted: 2009年12月15日(火) 19:58
by 初心者
>>ひよこさん
>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:龍神録 ポーズ中の効果音について
Posted: 2009年12月15日(火) 22:26
by Dixq (管理人)
呼び出し元でこの関数が呼び出されていないという事はないですか?
一切合財コンパイル出来る形でアップローダなどにアップロードしてもらった方がよさそうな気がしますが・・。
Re:龍神録 ポーズ中の効果音について
Posted: 2009年12月15日(火) 23:02
by 初心者
>呼び出し元でこの関数が呼び出されていないという事はないですか?
というのはどういったことなのでしょうか?
Re:龍神録 ポーズ中の効果音について
Posted: 2009年12月16日(水) 18:02
by 通りすがり
>メイン画面内が真っ暗になるバグも発生してて
>参ってます・・・
多分これが原因?
//キャプチャした画像の開放
if( CheckStatePad(configpad.shot) == 1 ){
DeleteGraph( img_screen );
}