Microsoft DirectX 8.0 (C++) |
サウンド バッファを再生カーソルの位置から再生する。
HRESULT Play( DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags );
成功した場合は DS_OK を返す。
失敗した場合は、次のいずれかのエラー値を返す。
DSERR_BUFFERLOST |
DSERR_INVALIDCALL |
DSERR_INVALIDPARAM |
DSERR_PRIOLEVELNEEDED |
IDirectSound8::SetCooperativeLevel が呼び出されていない場合でも、メソッドは DS_OK を返す。ただし、協調レベルが設定されるまでサウンドは出力されない。
このメソッドが指定したバッファが既に再生中だった場合、メソッドの呼び出しは成功し、バッファは再生を続ける。ただし最新の呼び出しで定義したフラグは、以前の呼び出しで定義されていたフラグを置き換える。
このメソッドがプライマリ バッファで呼び出された場合は、サウンド デバイスでバッファの再生が開始される。アプリケーションが DSSCL_WRITEPRIMARY の協調レベルに設定されている場合は、アプリケーションによりプライマリ バッファに置かれた任意のオーディオ データがサウンド デバイスに送られる。アプリケーションがほかの協調レベルに設定されている場合は、セカンダリ バッファが再生されていないと、プライマリ バッファは無音となる。プライマリ バッファは、DSBPLAY_LOOPING フラグで再生しなければならない。詳細については、「プライマリ バッファの連続再生」を参照すること。
このメソッドが DSBCAPS_LOCDEFER フラグで作成されていないバッファ上に設定されたボイス割り当てフラグ、またはボイス管理フラグで呼び出されると、この呼び出しは失敗し、DSERR_INVALIDPARAM が返される。
DSBPLAY_TERMINATEBY_TIME と DSBPLAY_TERMINATEBY_DISTANCE を組み合わせることはできないが、このどちらかと DSBPLAY_TERMINATEBY_PRIORITY を組み合わせることができる。この場合、DSBPLAY_TERMINATEBY_TIME または DSBPLAY_TERMINATEBY_DISTANCE フラグは、優先度が等しい場合にどのバッファを終了すべきかを決定するために使われる。
次の表は、ハードウェア ボイスの空きを利用できない場合に、ボイス割り当てフラグとボイス管理フラグの組み合わせによって決まるメソッドの動作を示している。
DSBPLAY_LOCHARDWARE | DSBPLAY_LOCHARDWARE と DSBPLAY_LOCSOFTWARE のどちらも使わない | DSBPLAY_LOCSOFTWARE | |
---|---|---|---|
DSBPLAY_TERMINATEBY_TIME | 再生の残り時間が最も少ないサウンドを終了し、新しいサウンドを解放したボイスで再生する。 | 再生の残り時間が最も少ないサウンドを終了し、新しいサウンドを解放したボイスで再生する。 | 新しいサウンドをソフトウェアで再生する。 |
DSBPLAY_TERMINATEBY_DISTANCE | ハードウェアで現在再生中のサウンドが最大距離を超えており、DSBCAPS_MUTE3DATMAXDISTANCE フラグが設定されている場合、そのいずれかを終了し、新しいサウンドをハードウェアで再生する。それ以外の場合、この呼び出しは失敗する。 | ハードウェアで現在再生中のサウンドが最大距離を超えており、DSBCAPS_MUTE3DATMAXDISTANCE フラグが設定されている場合、そのいずれかを終了し、新しいサウンドをハードウェアで再生する。それ以外の場合は、新しいサウンドをソフトウェアで再生する。 | 新しいサウンドをソフトウェアで再生する。 |
DSBPLAY_TERMINATEBY_PRIORITY | 新しいサウンドの優先度がハードウェアで現在再生中のサウンドよりも高いか同じ場合、優先度の最も低いサウンドを終了し、新しいサウンドをハードウェアで再生する。それ以外の場合、この呼び出しは失敗する。 | 新しいサウンドの優先度がハードウェアで現在再生中のサウンドよりも高いか同じ場合、優先度の最も低いサウンドを終了し、新しいサウンドをハードウェアで再生する。それ以外の場合は、新しいサウンドをソフトウェアで再生する。 | 新しいサウンドをソフトウェアで再生する。 |
ヘッダー : dsound.h で宣言。