ページ 1 / 1
PlaySoundMemについて
Posted: 2011年5月20日(金) 10:37
by ねこだましい
ここを使うのは初めてですがお願いします。
グローバル関数で int SHandle = LoadSoundMem("~"); と書き、
関数内で PlaySoundMem(SHandle,DX_PLAYTYPE_BACK); と書いても音が鳴りません。
int SHandle = LoadSoundMem("~");//グローバル関数
void MUSIC(void)
{
PlaySoundMem(SHandle,DX_PLAYTYPE_BACK);
}
出来ない仕様何ですかね?
Re: PlaySoundMemについて
Posted: 2011年5月20日(金) 10:46
by softya(ソフト屋)
グローバル変数の初期値としてロードしても、その後に行われるmainのDxLib_Init()で解放されてしまうからではないでしょうか。
あるいは、DxLib_Init()前なのでロード自体行われない可能性も。
どちらにしても、グローバル変数の初期値としてロードは止めた方が良いと思われます。
Re: PlaySoundMemについて
Posted: 2011年5月20日(金) 11:06
by ねこだましい
softya(ソフト屋)さん、すばやい対応ありがとうございます。
よくわかりました。
すみませんが、また質問です。
void MUSIC(int x)
{
switch(x)
{
case 1: PlaySoundMem(SHandle[0],DX_PLAYTYPE_BACK); break;
case 2: PlaySoundMem(SHandle[1],DX_PLAYTYPE_BACK); break;
case 3: PlaySoundMem(SHandle[2],DX_PLAYTYPE_BACK); break;
case 4: PlaySoundMem(SHandle[3],DX_PLAYTYPE_BACK); break;
case 5: PlaySoundMem(SHandle[4],DX_PLAYTYPE_BACK); break;
case 6: PlaySoundMem(SHandle[5],DX_PLAYTYPE_BACK); break;
default: break;
}
}
のような、音楽再生をする関数をつくりたいのですが、
いい案はないでしょうか?
Re: PlaySoundMemについて
Posted: 2011年5月20日(金) 11:32
by softya(ソフト屋)
シンプルにしたいなら下記の様なコードではどうでしょうか。
codeタグで読みやすくなりますのでお使い下さい。
コード:
void MUSIC(int n)
{
if( (1<=n) && (n<=6) ) {
PlaySoundMem(SHandle[n-1],DX_PLAYTYPE_BACK);
}
}
xは座標にみえるのでnにしました。
Re: PlaySoundMemについて
Posted: 2011年5月20日(金) 12:33
by ねこだましい
すごいシンプルですね。
活用させていただきます。
いろいろと本当にありがとうございました。