>> ゲームプログラミング入門トップに戻る

音声が再生中かどうかを調べる

今回は音声が再生中かどうかを調べる方法を説明します。

関数には、CheckSoundMem関数を使います。
これはメモリに読み込まれた音声だけが対象です。
ファイルから直接再生するPlaySoundFileには使えません。
リファレンスには載ってなかったので、ファイルから直接再生する場合の関数は用意してないのかもしれません。
引数にはサウンドハンドルを指定します。
戻り値が1なら再生中で、0なら再生していません。-1ならエラーです。

以下はコードのサンプルです。

#include "DxLib.h"

// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
	ChangeWindowMode(TRUE);

	if( DxLib_Init() == -1 )		// DXライブラリ初期化処理
	{
		return -1 ;			// エラーが起きたら直ちに終了
	}
	
	char key[256];

	//サウンドハンドル取得。
	int sh;
	sh=LoadSoundMem("bom.wav");

	
	//描画先を裏画面に設定
	SetDrawScreen(DX_SCREEN_BACK);

	while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll(key)==0){


		if(key[KEY_INPUT_RETURN]==1){
			if(CheckSoundMem(sh)==0)
				PlaySoundMem(sh,DX_PLAYTYPE_BACK,TRUE);
		}
	}

	DxLib_End() ;				// DXライブラリ使用の終了処理

	return 0 ;				// ソフトの終了 
}

これを実行して、エンターキーを押すと音声が再生されますが、
音声が停止中の時だけ再生するようにしているので、
キーを押しっぱなしにしていても、鳴り続けることはありません。
ちゃんと再生が停止してから、再生されます。

次回はメモリに読み込んだ音声データを削除する方法を説明します。

>> 【メモリに読み込んだ音声データを削除する】に進む
>> ゲームプログラミング入門トップに戻る