VB.net DirectSound 中 New SecondaryBuffer 多个实例 如何控制其中某个指定实例或者全部实例?
在VB.net中引用DirectSound创建一个窗体应用,点击按钮会播放sound\1.wav。
不停的点击Button1,会重叠播放声音。
点击Button2,会停止播放。
我的问题是:
每次点击Button2时只有最后一个New产生的SecondaryBuffer实例会停止,之前的SecondaryBuffer仍然会继续播放,无论点击多少次Button2,也不会停止。
可能是因为Buf = New SecondaryBuffer("sound\1.wav", desc, ad) 这条语句建立的多个实例全部都叫"Buf",当执行Buf.Stop()时就不知道Stop的是哪个实例了。
那么请问使用NEW创建的多个同名的实例,是否有序号?是否能够根据序号单独控制某个特定的实例?
或者有什么其他的方法?谢谢大家了。
代码如下:
Imports Microsoft.DirectX.DirectSound
Public Class Form1
Dim ad As Device '创建设备
Dim Buf As SecondaryBuffer '创建缓冲
Dim desc As BufferDescription '创建缓冲
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ad = New Device '实力化设备对象
ad.SetCooperativeLevel(Me.Handle, CooperativeLevel.Normal) '关联
desc = New BufferDescription
desc.GlobalFocus = True
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Buf = New SecondaryBuffer("sound\1.wav", desc, ad) '实力化缓冲区
Buf.Play(0, BufferPlayFlags.Default) '播放,同时指定开始位置跟方式
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Buf.stop()
End Sub
End Class