お世話になっております。タスクと申します。
SetUseASyncLoadFlagにて同期読み込みしたサウンドハンドルと
通常通り同期読み込みしたサウンドハンドルにてPlaySoundMemの挙動が異なる現象が発生しております。
具体的にはサウンドの再生が終わる前に再度同じサウンドハンドルにてPlaySoundMemを実行した際、下記のようになります。
同期:PlaySoundMem呼出→サウンド再生開始→再度PlaySoundMem呼出→”再生中のサウンドに重ねて”サウンド再生開始
非同期:PlaySoundMem呼出→サウンド再生開始→再度PlaySoundMem呼出→”再生中のサウンドが停止した後”サウンド再生開始
元々同期で製作しており、非同期対応した際この現象が発生したのですが
非同期読み込みでも再生中のサウンドを止めずに重ねて再生する方法はあるのでしょうか?
ご教示頂ければ幸いです。
環境:
DXライブラリ:Ver 3.09d
OS:Windows7 32bit
開発:VC++ 2005
サウンドボード:Creative SoundBlaster X-Fi
検証コード:
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode(true) ;
if( DxLib_Init() == -1 ){ return -1;}
//非同期読み込み時コメント解除
//SetUseASyncLoadFlag(true);
int hSound=LoadSoundMem("Test.WAV");
//非同期読み込み時コメント解除
//SetUseASyncLoadFlag(false);
//
//if (GetASyncLoadNum()>0){
// ProcessMessage();
//}
//500ms毎に再生
while(1){
PlaySoundMem(hSound,DX_PLAYTYPE_BACK);
WaitTimer(500);
if( ProcessMessage() < 0 ) break ;
if( CheckHitKey( KEY_INPUT_ESCAPE )==1 ) break ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}