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

2 篇文章 0 订阅
1 篇文章 0 订阅


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

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

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

  想想以前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:

  

2011-04-26_110909

 

  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,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按钮触发射击音效:

 1:   private  void ClickMe_Click( object sender, RoutedEventArgs e)
 2:  {
 3:  var laserStream =
 4:  Application.GetResourceStream( new Uri( "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按钮将触发射击音效. 界面截图:

  

2011-04-26_113803

 

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

源码下载

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
未来社区的建设背景和需求分析指出,随着智能经济、大数据、人工智能、物联网、区块链、云计算等技术的发展,社区服务正朝着数字化、智能化转型。社区服务渠道由分散向统一融合转变,服务内容由通用庞杂向个性化、服务导向转变。未来社区将构建数字化生态,实现数据在线、组织在线、服务在线、产品智能和决策智能,赋能企业创新,同时注重人才培养和科研平台建设。 规划设计方面,未来社区将基于居民需求,打造以服务为中心的社区管理模式。通过统一的服务平台和应用,实现服务内容的整合和优化,提供灵活多样的服务方式,如推送式、订阅式、热点式等。社区将构建数据与应用的良性循环,提高服务效率,同时注重生态优美、绿色碳、社会和谐,以实现幸福民生和产业发展。 建设运营上,未来社区强调科学规划、以人为本,创新引领、重点突破,统筹推进、整体提升。通过实施院落+社团自治工程,转变政府职能,深化社区自治法制化、信息化,解决社区治理中的重点问题。目标是培养有活力的社会组织,提高社区居民参与度和满意度,实现社区治理服务的制度机制创新。 未来社区的数字化解决方案包括信息发布系统、服务系统和管理系统。信息发布系统涵盖公共服务类和社会化服务类信息,提供政策宣传、家政服务、健康医疗咨询等功能。服务系统功能需求包括办事指南、公共服务、社区工作参与互动等,旨在提高社区服务能力。管理系统功能需求则涉及院落管理、社团管理、社工队伍管理等,以实现社区治理的现代化。 最后,未来社区建设注重整合政府、社会组织、企业等多方资源,以提高社区服务的效率和质量。通过建立社区管理服务综合信息平台,提供社区公共服务、社区社会组织管理服务和社区便民服务,实现管理精简、高效、透明,服务快速、便捷。同时,通过培育和发展社区协会、社团等组织,激发社会化组织活力,为居民提供综合性的咨询和服务,促进社区的和谐发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值