ページ 11

LoadSoundMem()が使えない

Posted: 2015年12月06日(日) 13:28
by よういち
関数を制作する際に、で音楽を読み込む際、関数内で 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(); ;
		
		 // 上を押していたら上に進む
		
}

Re: LoadSoundMem()が使えない

Posted: 2015年12月06日(日) 13:48
by softya(ソフト屋)
DxLib_Init()後にしか読み込めませんので、関数外の変数の初期化ではDxLib_Init()前に実行されてしまいます。
初期化する関数を作って、DxLib_Init()後に初期化する関数を呼び出すようにしてください。

Re: LoadSoundMem()が使えない

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