トップページ > 過去ログ > 記事閲覧
同期/非同期読み込み時のPlaySoundMemの挙動の違い
名前:タスク 日時: 2013/01/10 21:59

お世話になっております。タスクと申します。 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 ; // ソフトの終了 }

Page: 1 |

Re: 同期/非同期読み込み時のPlaySoundMemの挙動の違い ( No.1 )
名前:管理人 日時:2013/01/12 22:35

ご報告ありがとうございます、載せて頂いたプログラムで現象を確認できました 修正版をアップしましたので、よろしければお試しください http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
Re: 同期/非同期読み込み時のPlaySoundMemの挙動の違い ( No.2 )
名前:タスク(解決済み) 日時:2013/01/13 00:34

迅速な対応ありがとうございました。 ライブラリ更新にて無事現象の修正を確認することができました。 ありがとうございました。

Page: 1 |