Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持

Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持,第1张

概述 Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持 时间:2011-04-26 03:48 来源:博客园 作者:chenkai 点击:525次 在一些应用程序.尤其在触摸屏和休闲游戏中,当用户在应用程序中做出 *** 作同时也播放出对应动作声音.例如现在Silverlight中和WP7已经实现FPS动作类游戏中射击AK-47突击步q时q声效果.或是动画 *** 作中飞机起飞动作时  Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持 时间:2011-04-26 03:48 来源:博客园 作者:chenkai 点击:525次 在一些应用程序.尤其在触摸屏和休闲游戏中,当用户在应用程序中做出 *** 作同时也播放出对应动作声音.例如现在Silverlight中和WP7已经实现FPS动作类游戏中射击AK-47突击步q时q声效果.或是动画 *** 作中飞机起飞动作时伴随的环绕音效.这在用户体验 *** 作时非常重要一环. 想想以前Silverlight版本中实现这种动作音效.开发人员往往采   

  在一些应用程序.尤其在触摸屏和休闲游戏中,当用户在应用程序中做出 *** 作同时也播放出对应动作声音.例如现在Silverlight中和WP7已经实现FPS动作类游戏中射击AK-47突击步q时q声效果.或是动画 *** 作中飞机起飞动作时伴随的环绕音效.这在用户体验 *** 作时非常重要一环.

  想想以前Silverlight版本中实现这种动作音效.开发人员往往采用各种各样技巧尽可能的在为客户提供在低延迟情况下提供完整用来MediaElements元素缓存区预加载音效文件效果.其实现在windows phone 7XNA游戏开发平台已经为开发人员提供处理声音效果的SoundEffect类支持.同样在Silverlight 5版本添加SoundEffect类做音效处理.

  在演示这个Demo前首先可以去下载相关的音效文件[WAV格式]:

  WAV Free file DownLoad link:http://www.wyomingwebdesign.com/files/pages/free_sound_files.HTML

  free_sound_files_Downlaod link[fllow]

  建立一个标准的Silverlight Application:

  

 

  ok.下载一个飞机起降环绕音的WAV文件.页面通过一个button按钮点击事件事件驱动的方式播放文件:

 1: < GrID x:name= "LayoutRoot"  Background= "White">
 2:  < button Content= "Gun fight_Sound"
 3:  Height=
"36"
 4:  HorizontalAlignment=
"left"
 5:  margin=
"107,129,0"
 6:  name=
"ClickMe"
 7:  VerticalAlignment=
"top"
 8:  WIDth=
"153"
 9:  Click=
"ClickMe_Click"  />
 10:  < /GrID>
 

  首先在执行播放文件前.通过Application对象的GetResourceStream()方法来预加载音效文件.通过SoundEffect类FromStream方法把文件流作为转化为可设置播放的对象SoundEffect.首先引入命名空间:

1:  using Microsoft.Xna.Framework.Audio;
2:  using System.windows.Resources; 
3:  using System.windows.Threading;

  button点击事件 *** 作文件播放 在页面执行加载时加载环绕背景音效:

 1:   var enginestream =
 2:  Application.GetResourceStream( new Uri( "engine_rumble4.wav", UriKind.relativeOrabsolute));
 3:  _engineEffect = SoundEffect.FromStream(enginestream.Stream);
 4:  
 5:  SoundEffectInstance engineInstance = _engineEffect.CreateInstance();
 6:  engineInstance.IsLooped =  true;
 7:  engineInstance.Pitch = -1.0f;  // low sound
 8:  engineInstance.Volume = 0.75f;
 9:  engineInstance.Play();
 

  通过SoundEffect对象创建SoundEffectInstance对象.islooped设置是否循环播放. Volume则设置播放音量. Play()方法则执行播放.加载好背景环绕效果音效.但我们点击button按钮触发射击音效:

private  voID ClickMe_Click( object sender, RoutedEventArgs e)
 2:  {
 3:  var laserStream =
 4:  Application.GetResourceStream( "laser_shot.wav", UriKind.relativeOrabsolute));
 5:  _laserShotEffect = SoundEffect.FromStream(laserStream.Stream);
 6:  
 7:  SoundEffectInstance instance = _laserShotEffect.CreateInstance();
 8:  instance.Pitch = 1.0f;  // high sound
 9:  instance.Play();
 10:  }
 

  当然在在游戏场景背景音效需要长期循环渲染.设置在加载页面把背景音效设置循环播放状态:

 1:  dispatcherTimer timer =  new dispatcherTimer();
 2:  timer.Interval = TimeSpan.FromSeconds(1);
 3:   //循环播放控制
 4:  timer.Tick += (s, ea) =>
 5:  {
 6:  timer.Stop();
 7:  SoundEffectInstance engineInstance2 = _engineEffect.CreateInstance();
 8:  engineInstance2.IsLooped =  true;
 9:  engineInstance2.Pitch = -.75f;  // slightly higher sound
 10:  engineInstance2.Volume = 0.5f;
 11:  engineInstance2.Play();
 12:  };
 13:  
 14:  timer.Start();
 

  ok.至此当运行界面后首先听到是场景的渲染音效.点击button按钮将触发射击音效. 界面截图:

  

 

  有了SoundEffect相对以前Silverlight版本不再需要在费过大力气实现同样的效果/.新的API增加即将大大简化解决问题整个问题流程.Silverlight 5 中支持将逐步的得到完善.源码下载:

源码下载

本文来自chenkai的博客,原文地址:http://www.cnblogs.com/chenkai/archive/2011/04/26/2029119.HTML

总结

以上是内存溢出为你收集整理的Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持全部内容,希望文章能够帮你解决Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1011302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存