PlaySoundMemについて

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

PlaySoundMemについて

#1

投稿記事 by ねこだましい » 14年前

ここを使うのは初めてですがお願いします。

グローバル関数で int SHandle = LoadSoundMem("~"); と書き、
関数内で PlaySoundMem(SHandle,DX_PLAYTYPE_BACK); と書いても音が鳴りません。


int SHandle = LoadSoundMem("~");//グローバル関数

void MUSIC(void)
{
PlaySoundMem(SHandle,DX_PLAYTYPE_BACK);
}

出来ない仕様何ですかね?

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

Re: PlaySoundMemについて

#2

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

グローバル変数の初期値としてロードしても、その後に行われるmainのDxLib_Init()で解放されてしまうからではないでしょうか。
あるいは、DxLib_Init()前なのでロード自体行われない可能性も。

どちらにしても、グローバル変数の初期値としてロードは止めた方が良いと思われます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ねこだましい

Re: PlaySoundMemについて

#3

投稿記事 by ねこだましい » 14年前

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;
}
}
のような、音楽再生をする関数をつくりたいのですが、
いい案はないでしょうか?

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

Re: PlaySoundMemについて

#4

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

シンプルにしたいなら下記の様なコードではどうでしょうか。

codeタグで読みやすくなりますのでお使い下さい。

コード:

void MUSIC(int n)
{
	if( (1<=n) && (n<=6) ) {
		PlaySoundMem(SHandle[n-1],DX_PLAYTYPE_BACK);
	}
}
xは座標にみえるのでnにしました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ねこだましい

Re: PlaySoundMemについて

#5

投稿記事 by ねこだましい » 14年前

すごいシンプルですね。
活用させていただきます。

いろいろと本当にありがとうございました。

閉鎖

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