LoadSoundMem()が使えない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
よういち

LoadSoundMem()が使えない

#1

投稿記事 by よういち » 8年前

関数を制作する際に、で音楽を読み込む際、関数内で int bgm=LoadSoundMem(bgm.mp3)とやるとちゃんと読み込んで音楽がなるのに関数の外でやると、エラーは起きないのですが読み込んでくれません。
これと同じことが画像を読み込む際にも起きています。どうしてでしょうか、ご教授お願いします。
また。関数外で読み込みたい理由は、作った関数をwhile文で回すからです。

音楽がならないコード

コード:

int bgm=LoadSoundMem( "souds/bgm.mp3" ) ;
///////////////////////  gameのスタートの関数定義  ///////////////////////////////////////////////////////
void gamestart() 
{	

	
	gamestate=Gs; //ゲームモード スタート
	 int title=LoadGraph("images/title.png");
	
	 DrawGraph(  0 , 130 , title, TRUE ) ;
	 DeleteGraph( title ) ;
	
	
	
	// 描画する文字列のサイズを設定
    int Cr=GetColor(255,255,255);
	SetFontSize(30) ;
	DrawString( 50 , 500 , "ゲームスタートするにはSPACEキーを押してください" , Cr ) ;
	SetFontSize( 28) ;
	DrawString(  2 , 550 , "キャラクターを操作するには↑↓→←キーを押してください" , Cr ) ;
	
		
	
	int key =GetJoypadInputState(DX_INPUT_KEY_PAD1);
		if(IsAKeyTrigger(key)==TRUE) gamestate=Gm, PlaySoundMem( bgm , DX_PLAYTYPE_LOOP ),start=GetNowCount(); ;
		
		 // 上を押していたら上に進む
		
}
音楽がなるコード。だけどwhileで回すたびに読み込むのでメモリ消費が半端じゃない。

コード:

///////////////////////  gameのスタートの関数定義  ///////////////////////////////////////////////////////
void gamestart() 
{	

	
	gamestate=Gs; //ゲームモード スタート
	 int title=LoadGraph("images/title.png");
	
	 DrawGraph(  0 , 130 , title, TRUE ) ;
	 DeleteGraph( title ) ;
	
	
	
	// 描画する文字列のサイズを設定
    int Cr=GetColor(255,255,255);
	SetFontSize(30) ;
	DrawString( 50 , 500 , "ゲームスタートするにはSPACEキーを押してください" , Cr ) ;
	SetFontSize( 28) ;
	DrawString(  2 , 550 , "キャラクターを操作するには↑↓→←キーを押してください" , Cr ) ;
	
		int bgm=LoadSoundMem( "souds/bgm.mp3" ) ;
	
	int key =GetJoypadInputState(DX_INPUT_KEY_PAD1);
		if(IsAKeyTrigger(key)==TRUE) gamestate=Gm, PlaySoundMem( bgm , DX_PLAYTYPE_LOOP ),start=GetNowCount(); ;
		
		 // 上を押していたら上に進む
		
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: LoadSoundMem()が使えない

#2

投稿記事 by softya(ソフト屋) » 8年前

DxLib_Init()後にしか読み込めませんので、関数外の変数の初期化ではDxLib_Init()前に実行されてしまいます。
初期化する関数を作って、DxLib_Init()後に初期化する関数を呼び出すようにしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: LoadSoundMem()が使えない

#3

投稿記事 by Dixq (管理人) » 8年前

よういちさん、名前を変えて投稿するのはフォーラムルール違反行為です。
名前の統一をお願いします。
また、こちらのトピックを放置しないでください。
http://dixq.net/forum/viewtopic.php?f=3&t=17381

閉鎖

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