特定の鳴らしている音楽のみを一定時間停止させて、その後また再開させる方法がわかりません。
DXライブラリを使っているのですがWaitTimerだと他の処理も停止してしまうのでできません。
どうしたらよいのかよろしければ教えてください
サウンドのループ
Re: サウンドのループ
PlaySoundMemの第3引数TopPositionFlagに、先頭から開始するかどうかの指定ができます。(リファレンスには書かれていませんが)
デフォルトではTRUEになっているので、再開したい時に、このフラグをFALSEに指定することで、途中から再生ができます。
以下に、サンプルコードを示します。
キー入力をすると音楽を停止して、1秒後に再開します。
デフォルトではTRUEになっているので、再開したい時に、このフラグをFALSEに指定することで、途中から再生ができます。
以下に、サンプルコードを示します。
キー入力をすると音楽を停止して、1秒後に再開します。
#include <DxLib.h>
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
ChangeWindowMode(TRUE);
DxLib_Init();
int sound = LoadSoundMem(_T("bgm.wav"));
PlaySoundMem(sound, DX_PLAYTYPE_LOOP);
int start;
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
ClearDrawScreen();
int playing = CheckSoundMem(sound); // 再生中かどうかのフラグ
int input = CheckHitKeyAll(); // キー入力があったかどうかのフラグ
// 再生中にキー入力があると一時停止
if (playing && input) {
printfDx(_T("%s\n"), _T("一時停止します"));
StopSoundMem(sound);
start = GetNowCount(); // 停止開始カウント
}
// 1秒以上停止していたら、再開
if (!playing && GetNowCount() - start >= 1000) {
printfDx(_T("%s\n"), _T("再開します"));
PlaySoundMem(sound, DX_PLAYTYPE_LOOP, FALSE);
}
}
DxLib_End();
}