在VB.net中引用DirectSound创建一个窗体应用,点击按钮会播放sound
.wav。 在VB.net中引用DirectSound创建一个窗体应用,点击按钮会播放sound
.wa
在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
谢谢,能不能告诉我下详细的方法?
十分感谢!
不停的点击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
5 个解决方案
#1
放进List里啊
#2
谢谢,能不能告诉我下详细的方法?
#3
比如你的对象类型是A
那么定义一个全局List<A> Alist=new List<A>();
然后每次new一个对象,不要丢弃,把它加入list
A a=new A();
Alist.Add(a);
然后你就可以遍历List去操作每一个实例化出来的对象了
那么定义一个全局List<A> Alist=new List<A>();
然后每次new一个对象,不要丢弃,把它加入list
A a=new A();
Alist.Add(a);
然后你就可以遍历List去操作每一个实例化出来的对象了
#4
对应你的代码,应该是
Dim DList As List<Device>=new List<Device>()
ad = New Device;
DList.Add(ad);
Dim DList As List<Device>=new List<Device>()
ad = New Device;
DList.Add(ad);
#5
十分感谢!
.wav。 在VB.net中引用DirectSound创建一个窗体应用,点击按钮会播放sound
在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
谢谢,能不能告诉我下详细的方法?
十分感谢!
不停的点击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
5 个解决方案
#1
放进List里啊
#2
谢谢,能不能告诉我下详细的方法?
#3
比如你的对象类型是A
那么定义一个全局List<A> Alist=new List<A>();
然后每次new一个对象,不要丢弃,把它加入list
A a=new A();
Alist.Add(a);
然后你就可以遍历List去操作每一个实例化出来的对象了
那么定义一个全局List<A> Alist=new List<A>();
然后每次new一个对象,不要丢弃,把它加入list
A a=new A();
Alist.Add(a);
然后你就可以遍历List去操作每一个实例化出来的对象了
#4
对应你的代码,应该是
Dim DList As List<Device>=new List<Device>()
ad = New Device;
DList.Add(ad);
Dim DList As List<Device>=new List<Device>()
ad = New Device;
DList.Add(ad);
#5
十分感谢!
.wa