トップページ > 記事閲覧
DuplicateSoundMemで作成したハンドルの後始末
名前:名無し 日時: 2015/10/25 22:12

MainメソッドでLoadSoundMemを読み込み、効果音を鳴らすたびにDuplicateSoundMemで音楽ハンドルを作成しているのですが、その後の後始末に困っています。 DuplicateSoundMemで作成したハンドルを一旦List<int>に格納して、PlaySoundMemで再生。 毎フレームList<int>をforで回して、再生中か確かめ、再生中でなければハンドルを破棄しています。 そこで質問ですが、LoadSoundMemで読み込んだ音を新たにハンドルを作成等をしなくても簡単に再生出来る関数はないでしょうか?
メンテ

Page: 1 |

Re: DuplicateSoundMemで作成したハンドルの後始末 ( No.1 )
名前:管理人 日時:2015/10/26 01:09

> MainメソッドでLoadSoundMemを読み込み、効果音を鳴らすたびにDuplicateSoundMemで音楽ハンドルを作成しているのですが なぜ効果音を鳴らすたびに DuplicateSoundMem でハンドルを作成されているのでしょうか? ( LoadSoundMem で読み込んだハンドルを PlaySoundMem で再生すると何か問題があるのでしょうか? )
メンテ
Re: DuplicateSoundMemで作成したハンドルの後始末 ( No.2 )
名前:名無し 日時:2015/10/26 16:34

LoadSoundMemで読み込んだハンドルをPlaySoundMemで再生すると、複数キャラがいた場合などに効果音の同時再生が出来ないので、DuplicateSoundMemで作成しています。
メンテ
Re: DuplicateSoundMemで作成したハンドルの後始末 ( No.3 )
名前:管理人 日時:2015/10/27 01:32

DXライブラリのサウンドハンドルはデフォルトで3音まで同時に再生することができます リファレンスには載っていませんが、LoadSoundMem の第二引数が最大同時再生数になっていますので、 この値を大きくすればその分同時に再生できる数を増やすことができます ( 同時再生可能数の数に応じて使用するメモリも若干増えますが・・・ ) // 16音同時再生ができるサウンドハンドルにする場合 int SoundHandle = LoadSoundMem( "Test.wav", 16 ) ; よろしければお試しください あと、最初のご質問のご返答ですが、DuplicateSoundMem を使用せずに、DuplicateSoundMem を使用して 作成したサウンドハンドルを使用してサウンドを再生したような効果を得られる関数はありません ただ、再生終了後に自動的にサウンドハンドルを削除するための関数はあります // サウンドハンドルの再生が終了したら自動的にハンドルを削除するかどうかを設定する int SetPlayFinishDeleteSoundMem( int DeleteFlag, int SoundHandle ) ; DuplicateSoundMem を使用して作成したサウンドハンドルに対して PlaySoundMem を実行する前に SetPlayFinishDeleteSoundMem( TRUE, DupSoundHandle ) ; を実行しておけば、再生の終了を監視して、再生が終了したら DeleteSoundMem で削除するという手間が省けます よろしければお使いください m(_ _)m
メンテ
Re: DuplicateSoundMemで作成したハンドルの後始末 ( No.4 )
名前:名無し 日時:2015/11/01 21:20

ありがとうございます。自動的に削除する関数があったのですね 助かりました
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存