Vb.net2008 Direct编程(二)
来源:互联网 发布:手机淘宝直通车怎么弄 编辑:程序博客网 时间:2024/05/18 20:50
Direcrsound教程
学习嘛,从最简单的开始,本节课我将告诉大家如何使用direct播放音乐。
首先我介绍一下directsound:
它是 directx中的一个组件,软件开发者可将数据通过多个音频流直接写入任何 directx兼容声卡里。它支持多种采样频率,且能随意增加以软件为基础的声音特效。同时, directsound本身就是一个声音合成引擎,它用系统内存容纳不同的音频流。
了解了directsound,我们开始学习directsound的编程,本次我们编写的程序是一个播放wav文件的程序,废话不多说,打开vs2008,新建一个vb的窗体应用程序,在窗体上放置一个textbox和一个button(text改为“播放”)。
双击窗体进入“查看代码”窗体。哦对了,千万别忘了引用directsound项选择:
“项目”→“添加引用”→“浏览”C:\WINDOWS\Microsoft.NET\DirectX for Managed Code\1.0.2902.0目录下的相关链接库,因为本次使用DirectSound,所以将Microsoft.DirectX.dll(此项可以省略掉)和Microsoft.DirectX.DirectSound.dll导入进来,当然你也可以从“.net”这个项目里直接找到。前提:你的电脑里安装了direct……。
首先在class前Imports(关于imports的意思,请见:http://dict.baidu.com/s?wd=import):
Imports Microsoft.DirectX’此项可以省略掉
Imports Microsoft.DirectX.DirectSound’directx的sound类
这样我们便把direct 的命名空间引用进来了,在后面的程序中,我们便可以对其进行操作了。
首先我们声明一个音频设备的全局变量Dev,并直接实例化,类型为device(设备类型):
dim Dev as new device ‘(因为direct直接操作硬件,所以dev在此做一个中介)
别告诉我你不知道全局变量在那里声明……,算了照顾新手,说一下吧public class 窗体名下面:
接着,我们要调用direct的sound类了,在button的click项里写入:
PrivateSub Button1_Click(ByVal senderAs System.Object, ByVal eAs System.EventArgs) Handles Button1.Click
dev.SetCooperativeLevel(Me, CooperativeLevel.Normal)’为dev绑定一个窗体,指dev这个音频设备为“me”这个窗体服务。设置CooperativeLevel是因为windows是多任务的系统,设备不是独占的,所以在使用设备前要为这个设备设置 CooperativeLevel.调用Device的SetCooperativeLevel方法:其中,第一个参数是一个Control,第二个参数 是个枚举类型.
Dim sbAs New SecondaryBuffer(TextBox1.Text, dev)’程序播放声音,是由程序从硬盘读取加载到缓冲区,然后播放出来的,所以在此我们声明一个缓冲区,并直接实例化。SecondaryBuffer的方法:
SecondaryBuffer(路径,使用设备)
sb.Play(0, BufferPlayFlags.Looping)’好了,声音已经加载到缓冲区了,我们应该播放了吧,用SecondaryBuffer这个类型的play方法,来进行播放,说一下play的方法:play(优先级(优先级越高使用的硬件资源越多),播放类型)播放类型包括default(默认)looping(循环)等等,剩下的自己体会吧。
Button1.Enabled = False’播放开始将button的enbled设为false,防止你点了很多次,播放重复,当然你也可以去掉,然后点很多次,特别过瘾,小心点多了电脑卡了哦!
End Sub’end button.click我习惯加上这句话,让我看到sub是知道这是什么控件的什么事件,在编写大程序时更加清楚明白,当然个人习惯,每个人都不同。
注释比较多哈,我重新发一遍源码,最好不要复制上,照着抄上也比复制上好,加深印象呵!:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Imports Microsoft.DirectX.DirectSound
PublicClass Form1
Dim devAs New Device
PrivateSub Button1_Click(ByVal senderAs System.Object, ByVal eAs System.EventArgs) Handles Button1.Click
dev.SetCooperativeLevel(Me, CooperativeLevel.Normal)
Dim sbAs New SecondaryBuffer(TextBox1.Text, dev)
sb.Play(0, BufferPlayFlags.Looping)
Button1.Enabled = False
EndSub
End Class
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
很简单是吧,再简单也不能轻视打好基础才能学更加深奥的!
测试一下吧,输入wav文件的路径,点击“播放”,咦?怎么出错啦,先别着急看看错误,loaderlock错误,如果你运行生成好的程序你会发现,生成的程序竟然没有错误,如果你想在测试中也不查出错误怎么办。来,跟着我做:找到菜单上的“调试”→“异常”→“managed debugging assistants”→“loaderlock”找到了么?把它改为未选中就可以啦,如果你的程序没有出错,那就不用搞了。
好了这一节到此结束,88.错误和疑问以及建议回复中见~
- Vb.net2008 Direct编程(二)
- Vb.net2008 Direct编程(一)
- vb.net2008 Direct编程(三)音乐播放器——第一部分
- vb.net2008 Direct编程(三)音乐播放器——第二部分
- vb.net2008 DirectX与VB.NET编程(四)3D音效理论篇
- VB.NET2008开发OCX控件
- VB的API编程精粹(二)
- vb数据库编程(二)--数据控件
- VB的API编程精粹(二)
- 解析VB编程关键字New(二)
- VB编程之二
- 用VB.net2008编写精美电子日历
- VB.NET2008 使用WORD 艺术字详解
- VB.NET2008实现创建邮件发送程序
- 用VB.NET2008实现影音播放器
- vb.net2008 启动画面专用类
- vb.net2008 swf Flash文件播放
- Append与Direct-Path Insert(二)
- hibernate_annotation
- Swing框架之Model
- Java io流
- 实现mapreduce多文件自定义输出
- DI(依赖注入)的进阶
- Vb.net2008 Direct编程(二)
- Google 的信仰
- Django request 信息
- myeclipse 提速方法
- 1N4148
- vb.net2008 Direct编程(三)音乐播放器——第一部分
- xcode4以后关于私有变量的定义问题
- sqlserver 创建按数据库
- java自定义异常