Silverlight 5 beta新特性探索系列:6.Silverlight 5新增低延迟声音效果类SoundEffect.支持wav音乐格式【附带源码实例】
2023-09-14 08:56:52 时间
在Silverlight 5中新增了一个SoundEffect类和SoundEffectInstance类用以加载wav格式的音乐,这样可以很及时的为动画添加音效。
现在我们看如何使用这两个类来控制播放wav音乐,首先引入mav音乐格式的文件(音频采样大小必须为16或者8位不能是24位,采用PCM编码,22.5, 44.1 or 48khz的采样率)如下图属性:
![2011042016273342.jpg](http://pic002.cnblogs.com/images/2011/140041/2011042016273342.jpg)
其次将引入的wav格式音乐文件在项目中右键点击其属性设置其“生成操作”为“内容”,如下图所示:
![2011042016275485.jpg](http://pic002.cnblogs.com/images/2011/140041/2011042016275485.jpg)
现在我们准备XAML代码以控制SoundEffectInstance类的属性,调节音乐播放效果:
Grid x:Name="LayoutRoot" Background="White" !--准备3个Silder控件以控制音乐效果-- Slider Height="135" HorizontalAlignment="Left" Margin="62,38,0,0" Name="SlVolume" VerticalAlignment="Top" Width="62" Orientation="Vertical" Maximum="1" Value="0.5" / Slider Height="135" HorizontalAlignment="Left" Margin="162,38,0,0" Name="SlPitch" VerticalAlignment="Top" Width="62" Orientation="Vertical" Value="0" Maximum="1" Minimum="-1" / Slider Height="135" HorizontalAlignment="Left" Margin="262,38,0,0" Name="SlPan" VerticalAlignment="Top" Width="62" Orientation="Vertical" Value="0" Maximum="1" Minimum="-1" / !--显示名称-- TextBlock Height="23" HorizontalAlignment="Left" Margin="71,179,0,0" Name="textBlock1" Text="音量调节" VerticalAlignment="Top" / TextBlock Height="23" HorizontalAlignment="Left" Margin="166,179,0,0" Name="textBlock2" Text="高低音调节" VerticalAlignment="Top" / TextBlock Height="23" HorizontalAlignment="Left" Margin="271,179,0,0" Name="textBlock3" Text="声道平衡" VerticalAlignment="Top" / /Grid
第一步:加载相应的事件
public MainPage() InitializeComponent(); //第一步:加载相应的事件 Loaded += new RoutedEventHandler(MainPage_Loaded); this.SlVolume.ValueChanged+= new RoutedPropertyChangedEventHandler double (SlVolume_ValueChanged); this.SlPitch.ValueChanged+= new RoutedPropertyChangedEventHandler double (SlPitch_ValueChanged); this.SlPan.ValueChanged+= new RoutedPropertyChangedEventHandler double (SlPan_ValueChanged); }
第二步:加载声音WAV文件
第三步:设置声音文件初始化播放属性
void MainPage_Loaded(object sender, RoutedEventArgs e) GetSound(); SoundEffect _soundEffect; SoundEffectInstance instance; public void GetSound() //第二步:加载声音WAV文件 var laserStream = Application.GetResourceStream(new Uri("zhizu.wav", UriKind.RelativeOrAbsolute)); _soundEffect = SoundEffect.FromStream(laserStream.Stream); //第三步:设置声音文件初始化播放属性 instance = _soundEffect.CreateInstance(); //Pitch变调效果属性,是高低音平衡调节,该值在-1到1之间设置 instance.Pitch = 0.0f; //Pan声像调节属性,它用于调节该路声源在空间的分布图像。 instance.Pan = 0.0f; //Volume属性是音量大小调节,该值范围是0-1 instance.Volume = 0.5f; instance.Play(); }第四步:根据Silder控件值的变化动态调节声音属性
private void SlVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs double e) //第四步:调节声音属性 instance.Volume = float.Parse(e.NewValue.ToString()); this.textBlock1.Text = "音量调节" + e.NewValue.ToString(); private void SlPitch_ValueChanged(object sender, RoutedPropertyChangedEventArgs double e) //第四步:调节声音属性 instance.Pitch = float.Parse(e.NewValue.ToString()); this.textBlock2.Text = "高低音调节" + e.NewValue.ToString(); private void SlPan_ValueChanged(object sender, RoutedPropertyChangedEventArgs double e) //第四步:调节声音属性 instance.Pan = float.Parse(e.NewValue.ToString()); this.textBlock3.Text = "声像调节" + e.NewValue.ToString(); }
注意SoundEffectInstance类的3个音乐效果属性Volume,Pitch,Pan如下:
SoundEffectInstance.Pitch //Pitch变调效果属性,是高低音平衡调节,该值在-1到1之间设置 //当往-1调节时,即往低音调调节 //当往+1调节时,即往高音调调节 //如果是0则正常音高 SoundEffectInstance.Volume //Volume属性是音量大小调节,该值范围是0-1 SoundEffectInstance.Pan //Pan声像调节属性,它用于调节该路声源在空间的分布图像。 //当往-1调节时,相当于把该路声源放在听音的左边。 //当往+1调节时,相当于把该路声源放在听音的右边。 //若把它置于中间位置0时,相当于把该路声源放在听音的正中。 //Pan属性是左右声道平衡,该值在-1到1之间设置
最后我们来看运行效果如下图,如果要听试听效果请点击 SL5SoundEffect.zip 下载源码。
![2011042016281138.jpg](http://pic002.cnblogs.com/images/2011/140041/2011042016281138.jpg)
随着Unity2017的普及,使用.NET 4X的开发者也越来越多了,下面笔者给大家介绍一下在C# 6中的新功能主要是怕自己忘记,2333,有些功能还是很实用的~ 使用Unity版本2018.
煦风满裳 程兴亮,专注于C#方面的开发工作,喜欢钻研Silverlight,CIL等方面的知识。平时喜欢看书、写技术博客、摄影、旅游和运动。
相关文章
- Excel vba编程实例 源码
- 实例分割综述(单阶段/两阶段/实时分割算法汇总)
- 【ES三周年】GPT引领学习之旅:弥补信息差,助力程序员高效掌握Elasticsearch(附实例)
- 技巧:快速修改Oracle实例名(oracle修改实例名)
- Oracle包函数:应用实例及其优势(oracle包函数)
- jsp源码实例1(输出)
- jsp源码实例5(cookie)
- jsp源码实例3(获取jsp各种参数)
- SQL语句练习实例之六人事系统中的缺勤(休假)统计
- android九宫格滑动解锁开机实例源码学习
- ListViewAdapter优化实例
- Extjs单独定义各组件的实例代码
- C#实现大数字运算的实例代码
- JS操作iframe里的dom(实例讲解)
- C#类的创建与初始化实例解析