Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持
2011-04-26 11:43
567 查看
想想以前Silverlight版本中实现这种动作音效.开发人员往往采用各种各样技巧尽可能的在为客户提供在低延迟情况下提供完整用来MediaElements元素缓存区预加载音效文件效果.其实现在Windows phone 7XNA游戏开发平台已经为开发人员提供处理声音效果的SoundEffect类支持.同样在Silverlight 5版本添加SoundEffect类做音效处理.
在演示这个Demo前首先可以去下载相关的音效文件[WAV格式]:
建立一个标准的Silverlight Application:
ok.下载一个飞机起降环绕音的WAV文件.页面通过一个Button按钮点击事件事件驱动的方式播放文件:
首先在执行播放文件前.通过Application对象的GetResourceStream()方法来预加载音效文件.通过SoundEffect类FromStream方法把文件流作为转化为可设置播放的对象SoundEffect.首先引入命名空间:
Button点击事件操作文件播放 在页面执行加载时加载环绕背景音效:
通过SoundEffect对象创建SoundEffectInstance对象.islooped设置是否循环播放. Volume则设置播放音量. Play()方法则执行播放.加载好背景环绕效果音效.但我们点击Button按钮触发射击音效:
当然在在游戏场景背景音效需要长期循环渲染.设置在加载页面把背景音效设置循环播放状态:
ok.至此当运行界面后首先听到是场景的渲染音效.点击Button按钮将触发射击音效. 界面截图:
有了SoundEffect相对以前Silverlight版本不再需要在费过大力气实现同样的效果/.新的API增加即将大大简化解决问题整个问题流程.Silverlight 5 中支持将逐步的得到完善.
源码下载见附件。
在演示这个Demo前首先可以去下载相关的音效文件[WAV格式]:
WAV Free File DownLoad Link:http://www.wyomingwebdesign.com/files/pages/free_sound_files.html free_sound_files_Downlaod Link[fllow] |
ok.下载一个飞机起降环绕音的WAV文件.页面通过一个Button按钮点击事件事件驱动的方式播放文件:
<Grid x:Name="LayoutRoot" Background="White"> <Button Content="Gun Fight_Sound" Height="36" HorizontalAlignment="Left" Margin="107,129,0,0" Name="ClickMe" VerticalAlignment="Top" Width="153" Click="ClickMe_Click" /> </Grid>
首先在执行播放文件前.通过Application对象的GetResourceStream()方法来预加载音效文件.通过SoundEffect类FromStream方法把文件流作为转化为可设置播放的对象SoundEffect.首先引入命名空间:
using Microsoft.Xna.Framework.Audio; using System.Windows.Resources; using System.Windows.Threading;
Button点击事件操作文件播放 在页面执行加载时加载环绕背景音效:
var engineStream = Application.GetResourceStream(new Uri("engine_rumble4.wav", UriKind.RelativeOrAbsolute)); _engineEffect = SoundEffect.FromStream(engineStream.Stream); SoundEffectInstance engineInstance = _engineEffect.CreateInstance(); engineInstance.IsLooped = true; engineInstance.Pitch = -1.0f; // low sound engineInstance.Volume = 0.75f; engineInstance.Play();
通过SoundEffect对象创建SoundEffectInstance对象.islooped设置是否循环播放. Volume则设置播放音量. Play()方法则执行播放.加载好背景环绕效果音效.但我们点击Button按钮触发射击音效:
private void ClickMe_Click(object sender, RoutedEventArgs e) { var laserStream = Application.GetResourceStream(new Uri("laser_shot.wav", UriKind.RelativeOrAbsolute)); _laserShotEffect = SoundEffect.FromStream(laserStream.Stream); SoundEffectInstance instance = _laserShotEffect.CreateInstance(); instance.Pitch = 1.0f; // high sound instance.Play(); }
当然在在游戏场景背景音效需要长期循环渲染.设置在加载页面把背景音效设置循环播放状态:
DispatcherTimer timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromSeconds(1); //循环播放控制 timer.Tick += (s, ea) => { timer.Stop(); SoundEffectInstance engineInstance2 = _engineEffect.CreateInstance(); engineInstance2.IsLooped = true; engineInstance2.Pitch = -.75f; // slightly higher sound engineInstance2.Volume = 0.5f; engineInstance2.Play(); }; timer.Start();
ok.至此当运行界面后首先听到是场景的渲染音效.点击Button按钮将触发射击音效. 界面截图:
有了SoundEffect相对以前Silverlight版本不再需要在费过大力气实现同样的效果/.新的API增加即将大大简化解决问题整个问题流程.Silverlight 5 中支持将逐步的得到完善.
源码下载见附件。
相关文章推荐
- Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持
- Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持
- Silverlight 5 beta新特性探索系列:6.Silverlight 5新增低延迟声音效果类SoundEffect.支持wav音乐格式【附带源码实例】
- Silverlight 5 beta新特性系列:6.Silverlight 5新增低延迟声音效果类SoundEffect.支持wav音乐格式
- Silverlight 5 beta新特性探索系列:1.安装Silverlight 5 beta环境以及OOB模式下Silverlight 5 多窗口支持
- Silverlight 5 beta新特性探索系列:1.安装Silverlight 5 beta环境以及OOB模式下Silverlight 5 多窗口支持
- Silverlight 5 Beta新特性[5]隐式模板支持
- Silverlight 5 Beta新特性[5]隐式模板支持
- 稳扎稳打Silverlight(66) - 5.0其它之自定义 XAML 扩展标记, 通过 XNA 处理声音效果, 支持矢量打印, 统计连击的次数
- Silverlight 5 Beta新特性[3]多窗口支持
- Silverlight 5 Beta新特性[3]多窗口支持
- Silverlight 2 beta 2 中目前不支持共享 WCF 的客户端类型
- Silverlight 5 RC新特性探索系列:15.Silverlight 5 RC 对OpenType字体属性的支持
- Silverlight 5 Beta 新特性预览
- Silverlight 5 beta新特性探索系列:3.Silverlight5中的文字增进控制【附带实例源码】
- Silverlight 5 RC新特性探索系列:15.Silverlight 5 RC 对OpenType字体属性的支持
- Silverlight 5 beta新特性探索系列:2.在XAML代码中设置断点和Binding绑定调试【附带源码实例】
- 微软发布Silverlight 5 Beta新特性
- Silverlight 5 beta新特性探索系列:3.Silverlight5中的文字增进控制【附带实例源码】
- 转载:Silverlight 4 Beta新特性