GVKun编程网logo

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

12

如果您对Silverlight5Beta新特性[6]低延迟对WAV格式声音效果支持和低延迟模式原理感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Silverlight5Beta新特性[6]低延

如果您对Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持低延迟模式原理感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持的各种细节,并对低延迟模式原理进行深入的分析,此外还有关于Silverlight 2.0 的新特性、Silverlight 2学习教程(九):Silverlight 2 beta2 新控件介绍之 TabControl 控件、Silverlight 3 新特性、Silverlight 4 Beta开发版带着许多新特性发布的实用技巧。

本文目录一览:

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

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



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"
 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按钮将触发射击音效. 界面截图:

  

2011-04-26_113803

 

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

源码下载

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

Silverlight 2.0 的新特性

Silverlight 2.0 的新特性

微软宣布,将 Silverlight 1.1 更名为 Silverlight 2.0 ,并将在 2008 年第一季度发布 Silverlight 2.0 的 Beta 版本,同时发布一个免费的 Visual Studio 2008 工具包,提供在 Visual Studio 2008 里对 Silverlight 2.0 开发的支持。

Silverlight 2.0 将包括以下特性:

Controls,Controls,Controls:

Silverlight 2.0 将包含一套丰富的控件,能够让程序开发人员开发功能丰富的 Rich Interactive Applications / Rich Internet Applications 程序。这些控件将包括:传统的控件,如TextBox、 CheckBox、Radiobutton等等;也会集成一些精美的布局控件,如 StackPanel、 Grid,和  WPF 一样;常用的功能控件,如 TabControl,Slider,ScrollViewer,ProgressBar等;还包括数据操作控件,如 DataGrid 等等。

WPF UI Framework:

Silverlight 2.0 中的 WPF UI Framework  将会是与 . NET 3.5 中 WPF UI framework  相兼容的子集,提供对 WPF UI frameworks 更加复杂特性的支持,如 “Control Extensible Framework Model”、“Layout Manager support”、“two-way Data-Binding” 和 “Control Template & Skinning Support”。

Networking :

Silverlight 2.0 将提供对REST(Representational State Transfer)、POX(Plain Old XML )、 RSS(Really Simple Syndication) 和  WAS * 的支持,提供对跨域网络访问的支持,可以利用网络上任何安全的数据和资源。

Rich Base Class Library Support :

Silverlight 2.0 支持丰富的 .NET 基类库,包括 Collections、IO、Generics、Threading、Globalization、XML、 Local Storage等,同时集成对 LINQ to XML 和复杂的 HTML DOM API 的支持。

Silverlight 2学习教程(九):Silverlight 2 beta2 新控件介绍之 TabControl 控件

Silverlight 2学习教程(九):Silverlight 2 beta2 新控件介绍之 TabControl 控件

 

Silverlight 2 beta2 新控件之TabControl

Silverlight 2 为设计人员和开发人员提供了可在应用程序中使用的一套控件,通过 Expression 工具,我们可以设置这些控件的外观。在 Silverlight 2 的 Beta 2中,又增添一个新的控件:TabControl

TabControl 控件包含在 System.Windows.Controls.Extended 类库中,而不是包含在 Silverlight 的核心类库中。要使用 TabControl 控件,需要添加对 Extended 程序集的引用才可以使用。在 Expression Blend 中,你可以在Asset Library的自定义控件中找到 TabControl。

 

实际上,自定义控件中包括 TabControl 和TabItem 2 个控件。在 Blend 中,需要先把TabControl控件拖到设计器界面中,然后在 Objects and Timeline 浏览器中双击 TabControl 控件,就会看到在这个控件周围有一条黄色的边框,表示该控件目前处于选中状态。此时,你必须再回到 Asset Library ,转到 Asset Library 控件并双击它,它就会添加到 TabControl的子控件中,可以添加多个。

 

 

最终的XAML文件可能是下面的样子:

<ex:TabControl TabStripPlacement="Bottom" VerticalAlignment="Top"
               Width="231.148" Height="156.611" HorizontalAlignment="Left"
               x:Name="tabstrip1">
    <ex:TabItem Width="75" Height="20">
    </ex:TabItem>
    <ex:TabItem Width="75" Height="20" Header="Second">
    </ex:TabItem>
    <ex:TabItem Width="75" Height="20" Header="Third">
    </ex:TabItem>
</ex:TabControl>

注意 TabControl 控件的 "ex" 名称空间,默认情况下可能是 “System_Windows_Controls”,这是添加 TabControl 控件时自动加上去的,这个名称空间实际上是加在 XAML 文件的 root 节点上的,可以改成任何想要的名称。

TabControl 有一些属性,其中一个最重要的属性是 TabStripPlacement ,这个属性允许我们设置 TabItems (tabs) 显示的方向:Top,Left,Right,或 Bottom。我们可以在 XAML 中设置可以在运行时使用 Dock  枚举设置。

每一个 TabItem 也有2个重要的属性:Header 和 Content,Header 设置标签(tab)本身的内容,而Content 设置 TabItem 里面的具体内容。它可以设置成文本值,也可以设置成其他那女人,如一些按钮控件等。例如

<ex:TabItem Width="75" Height="20" Header="Third">
    <StackPanel Orientation="Vertical">
        <TextBox x:Name="yourname" />
        <Button Content="Click me" Click="Button_Click" />
        <TextBlock x:Name="resulttext" />
    </StackPanel>
</ex:TabItem>

如果要设置Header的内容,可以明确使用 TabItem.Header,例如
<ex:TabItem Width="75" Height="20">
    <ex:TabItem.Header>
        <Button Content="foo" />
    </ex:TabItem.Header>
    <Button Content="Click Me" Click="Button_Click_1"/>
</ex:TabItem>

 

 

源自:http://timheuer.com/blog/archive/2008/06/04/silverlight-2-introduces-tabcontrol.aspx

Silverlight 3 新特性

Silverlight 3 新特性

上次在twitter上说了一下Silverlight3的新功能被微软的人看见后因为是NDA的内容,马上删除了. 这次发布后就可以随便说了,其实也就差几天的时间. 

Video/Audio

Silverlight除VC-1外还支持H.264视频格式。这是YouTube等使用的新兴业界标准格式,并在很多设备上有硬解码。Silverlight也支持AAC音频。二者都以MP4容器格式实现(如.MP4或.M4A格式文件)。

另外还支持F4v,Adobe的高清格式. 可惜的是在3.0这个版本中Silverlight还不支持Camera. 听说下一个版本会加入,大家还需等待一年.

GPU acceleration

这是Silverlight 3运行时中opt-in的特性,in-browser和out-of-browser都可以。在HTML中的Silverlight tag中,添加一个EnableGPUacceleration=true参数来启用GPU加速。

3D Support

Silverlight 3带有透视3D,对于一个父元素,你使用一个Projection attached property,如:

<Border.Projection>
   <PlaneProjection x:Name=”p3” RotationY=”-30” />
</Border.Projection>

这个perspective 3D也只是将平面对象转换成立体的对象,而非真正的3D渲染引擎. 而Silverlight中还没出现Flash中的pv3d一类的3D engines.

 

Animation Easing新加入了很多easing的function,和Flash里的Tween类似.

Custom Dialogs

Silvelright 3现在支持SaveFileDialog。出于安全原因,我们不返回路径给开发者,相反,你可以从结果中打开文件:

mySaveFileDialog.Show();
if (mySaveFileDialog == true)
  return mySaveFileDialog.OpenFile();

关于上传下载FlashPlayer10有一些新的更新. 另外我觉得如果禁止修改的,打开文件也可以加上.

Effects

Silverlight 3中引入的Effects提供低级手段来影响视觉效果。我们内置提供阴影和模糊两个效果,你也可以创建自己的效果。自定义效果以HLSL Shaders来实现——用DirectX SDK工具编译成byte code供Silverlight 3使用。Shaders允许开发者在UI元素渲染前修改每个像素。

如果Silverlight也支持bitmapdata的话,那么Effects的加入会对它的绘图功能提高很多.

Pixel和Media APIs

你现在可以从位图中读/写像素。这个功能有两种使用方式:in-memory位图或保存visual到位图。同时支持的还有raw audio/video API实现动态声音生成,自定义视频codec,或者alpha video channels。

in-memory位图或保存visual到位图,这个就是微软学习FlashPlayer的bitmap的方式加入的新功能,效率问题还没有测试.
另外动态声音生成在新版本的FlashPlayer 10 也加入了.

Local Messaging

在多个Silverlight插件间传递消息曾是个挑战。现在我们支持类似”命名管道”的消息,不但垮同一网页上的对象,甚至跨多浏览器的多个Silverlight实例。例如一个Chrome实例中的Silverlight和Firefox中的另一个实例通信。

Flash中用localConnection来实现,另外Flash中的localConnection还有垃圾收集的特别功效,这点微软好像没有加入哟 :).

Out of browser

通过一个manifest对每个应用程序启用(标准Silverlight 3模板中就有这个段落,你只要uncomment它)。一个用户可以右击Silverlight内容,或者点击应用里的一个按钮来启动Silverlight out-of-browser应用。

这个功能很不错,可以让用户将web应用部署到本地,增加用户对当前web应用的依赖. 不知道Adobe会不会加上,其实就是在它的swf文件和AIR文件中做一下关联,在发布的时候同时发布两个文件,然后用户可以将这两个文件同时部署到Server side上. 就类似Flex中的view source功能一样.

Tooling

Silverlight 3工具会包含新的压缩算法,XAP文件的大小会缩小10~30%。

感谢Felix Wang的提供

Silverlight 4 Beta开发版带着许多新特性发布

Silverlight 4 Beta开发版带着许多新特性发布

 

Microsoft在PDC 2009 上宣布,他们已经开始提供Silverlight开发版Beta 了, 这距离上个发布Silverlight 3仅有几个月时间。新版本中有大量新的特性:一套完整的控件(超过60个),同一份代码对桌面和Silverlight沙盒都可用,对MEF的支持,完全 可编辑的设计界面、完全的智能感知、更好的音频-视频支持、更好的性能等等。

Silverlight 4拥有大量新的基础特性:

  • 全面的打印支持,使我们可以为报告和文档抓屏,也可以对其进行虚拟打印查看,而这与屏幕上的内容无关。
  • 一整套窗体控件,其中有60多个可自定义、可样式化的组件。新的控件包括带有超链接、图片和编辑框的RichTextBox,还有为复杂字段验证所用的Masked TextBox。经过改善的控件包括带有可排序/可改变大小的列以及能够复制/粘贴行的DataGrid。
  • WCF RIA Services引入了企业级网络(enterprise class networking)和数据访问,这是为了创建包含事务、数据分页、WCF和HTTP改善的多层应用程序。
  • 本地化改善,其中有双向文本、从右向左的支持,以及复杂的文字像阿拉伯文、希伯来文、泰文等30多种新的语言。
  • .NET通用运行时(CLR)现在使同一份编译好的代码能够运行在桌面上和Silverlight中,而不需要做任何改变。
  • 改善了的数据绑定支持提升了灵活性和生产效率,这是通过数据的分组/编辑以及在绑定中的字符串格式化达到的。
  • 托管扩展框架(Managed Extensibility Framework,MEF)支持创建大型复杂的应用程序。
  • 支 持Silverlight的扩展工具,这是在Visual Studio 2010中新添加的。其中包括完整的可编辑设计界面、拖曳式的数据绑定、自动绑定控件、数据源选择、与Expression Blend样式化资源的整合、Silverlight项目支持以及完全的智能感知。

开发工具也被改善了:

  • 可描绘控件和布局的完全可编辑设计界面。
  • 有丰富属性的网格控件以及为值所用的新编辑器。
  • 对数据绑定的拖曳支持,以及自动化创建绑定控件,像listBox、datagrid。还有新的数据源窗口和选择器。
  • 易于选择样式和资源,从而基于内建在Expression Blend中的设计器资源创建美观的应用程序,。
  • 为Silverlight应用程序提供的内建项目支持。
  • 为XAML和C#以及VB语言所用的完全智能感知的编辑器。

为创建真正丰富的应用程序而提供的新特性的列表相当长:

  • 通过动画效果,流畅的界面改善提高了应用程序的可用性。
  • 支持网络摄像机和麦克风,从而允许分享视频和音频,例如针对聊天或者客户服务应用程序。
  • 音频和视频的本地录制能力,可以捕获RAW格式的视频而不需要请求与服务器的交互,允许广泛的最终用户的交互和通信场景,例如视频会议。
  • 将带有复制和粘贴或者拖曳特性的数据带入到你的应用程序中。
  • 现在长的列表可以使用鼠标滚轴很容易地滚动。
  • 通过像右键点击环境菜单这样的新特性支持常规的桌面交互。
  • 对Google的Chrome浏览器的支持。
  • 性能优化,这意味着Silverlight 4应用程序能更快地启动,并以相当于Silverlight 3应用程序二倍的速度运行。
  • 深度缩放的改善,包括用来支持更大的数据集和更快动画的硬件加速。
  • 多点触控的支持,从而支持一些手势和触摸交互,这将被带来更好的用户体验。
  • 多播网络(Multicast networking),使得企业可以降低流广播事件——像公司会议和培训——的成本。
  • 通过由PlayReady提供的Silverlight DRM为H.264媒体提供内容保护。
  • 为音频/视频流提供输出保护,允许内容拥有者或者分发者确保受保护的内容只能通过安全的视频连接才能够查看。

作为一个早期的发布,Silverlight 4只提供给开发者,而暂时还没有提供终端用户的运行环境。Silverlight 4需要VS2010的支持。最基本的工具和文档有:

Silverlight 4 Beta Tools for Visual Studio 2010 ,包括开发运行时、Visual Studio 项目支持和 Silverlight 4 SDK 。

Silverlight Toolkit ,包括各种控件,并带有在开源许可之下发布的源代码。

Silverlight 4 Beta 的在线文档

Silverlight 4 Beta的离线CHM帮助文档

视频和示例代码 ——视频解释了最顶端的特性。包括C#和VB.NET源代码

在PDC 2009上演示的应用程序是Facebook的一个客户端 FishBowl ,它实际上是一个脱离浏览器运行的Silverlight应用程序,它允许用户能够通过可自定义的富界面,连接到他们的能够与之交互的Facebook账户。FishBowl的源代码可以在CodePlex获得。

关于Silverlight 5 Beta新特性[6]低延迟对WAV格式声音效果支持低延迟模式原理的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Silverlight 2.0 的新特性、Silverlight 2学习教程(九):Silverlight 2 beta2 新控件介绍之 TabControl 控件、Silverlight 3 新特性、Silverlight 4 Beta开发版带着许多新特性发布的相关信息,请在本站寻找。

本文标签: