Microsoft DirectX 8.0 (Visual Basic) |
object.Play(flags As CONST_DSBPLAYFLAGS)
失敗した場合はエラーが発生し、Err.Number に次のいずれかのエラー コードが設定される。
DSERR_BUFFERLOST |
DSERR_INVALIDCALL |
DSERR_INVALIDPARAM |
DSERR_PRIOLEVELNEEDED |
このメソッドを初めて使用する前に、アプリケーションでDirectSound8.SetCooperativeLevel メソッドを呼び出す必要がある。
メソッドで指定したバッファが既に再生中だった場合、呼び出しは成功し、バッファは再生を続ける。ただし最新の呼び出しで定義したフラグは、以前の呼び出しで定義されたフラグを置き換える。
このメソッドが 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 | 新しいサウンドの優先度がハードウェアで現在再生中のサウンドよりも高いか同じ場合、優先度の最も低いサウンドを終了し、新しいサウンドをハードウェアで再生する。それ以外の場合、この呼び出しは失敗する。 | 新しいサウンドの優先度がハードウェアで現在再生中のサウンドよりも高いか同じ場合、優先度の最も低いサウンドを終了し、新しいサウンドをハードウェアで再生する。それ以外の場合は、新しいサウンドをソフトウェアで再生する。 | 新しいサウンドをソフトウェアで再生する。 |