![]() |
Tipp 0091
|
Sound-Dateien laden, abspielen, wiederholen
|
 |
|
Autor/Einsender: Datum: |
|
Alexander Csadek 08.10.2005 |
|
Entwicklungsumgebung: |
|
VB.Net 2003 |
DirectX-Version: |
|
DirectX
9 |
|
|
Das Abspielen einer WAV-Datei ist in DirectX 9 sehr einfach. Dazu muss ein DirectSoundDevice
erzeugt und der CooperativeLevel gesetzt werden. Danach wird die WAV-Datei ohne irgendwelche besonderen
Flags in einen SecondaryBuffer geladen und die Methode Play verwendet.
|
Bei der Methode Play muss
ein Flag mitgegeben werden, damit DSound weis, ob der Sound nur einmal oder wiederholt
abgespielt werden soll (BufferPlayFlags.Looping oder BufferPlayFlags.Default).
Angehalten wird das Abspielen mit der Methode Stop des Objekts SecondaryBuffer.
Um festzustellen, ob der SoundBuffer aktuell noch abspielt, genügt es den Status
des SecondaryBuffer abzufragen.
|
|
|
'DirectSound Objekte
Private DSoundDevice As Device = Nothing
Private DSSecondaryBuffer As SecondaryBuffer = Nothing
Private Sub frmMain_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Try
'DirectSoundDevice erzeugen
DSoundDevice = New Device
'CooperativeLevel setzen
DSoundDevice.SetCooperativeLevel( _
Me, CooperativeLevel.Priority)
Catch ex As Exception
MsgBox("Fehler beim Erstellen des DSoundDevice." & _
vbCrLf & ex.Message.ToString())
End Try
End Sub
Private Sub cmd_Load_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmd_Load.Click
Try
'WAV-Datei ohne irgendwelche besonderen Flags laden
DSSecondaryBuffer = New SecondaryBuffer( _
Application.StartupPath & "\Sound.wav", DSoundDevice)
cmd_Load.Enabled = False
cmd_Play.Enabled = True
Timer1.Enabled = True
Catch ex As SoundException
MsgBox("Fehler beim Laden der WAV-Datei." & vbCrLf & _
ex.Message.ToString())
End Try
End Sub
Private Sub cmd_Play_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmd_Play.Click
If (Not DSoundDevice Is Nothing) Then
'Abspielen der WAV-Datei
'Je nachdem, ob die CheckBox True oder False ist,
'also das WAV sich wiederholen soll oder nicht
DSSecondaryBuffer.Play(0, IIf(chk_Loop.Checked, _
BufferPlayFlags.Looping, BufferPlayFlags.Default))
cmd_Play.Enabled = False
cmd_Stop.Enabled = True
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
If (Not DSoundDevice Is Nothing) Then
'Prüfen, ob der SoundBuffer noch abspielt
If (DSSecondaryBuffer.Status.Playing) Then
cmd_Stop.Enabled = True
Else
cmd_Play.Enabled = True
cmd_Stop.Enabled = False
End If
End If
End Sub
Private Sub cmd_Stop_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmd_Stop.Click
If (Not DSoundDevice Is Nothing) Then
'Abspielen stoppen
DSSecondaryBuffer.Stop()
cmd_Play.Enabled = True
cmd_Stop.Enabled = False
End If
End Sub
|
|
|
|
Um dieses Beispiel ausführen zu können, wird die DirectX 9 for Managed Code Runtime benötigt.
|
|
Windows-Version |
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
|
Download (40,2 kB)
|
Downloads bisher: [ 379 ]
|
|
|