在前面的篇章中我们制作了很多动态效果,作为一个游戏来说除了视觉效果外当然还需要有音乐效果。本篇就要为游戏增加一些音效,比如到物品被找到时会发出音乐提示,在游戏进行过程中会有背景音乐,这样可以使游戏更加完美逼真。

还是先来看看增加音效后的效果吧(因为有音乐文件加载会慢些):

1. 首先通过VS把两个音乐文件加入到Audio 文件夹中,并且将Build Action 设置为Content,这样在编译程序时,音乐文件就会封装到xap 文件中:

2. 下面先做比较简单的部分,为每个Path 添加PlaySoundAction,这样在点击物品时就会发出清脆的风铃声(magic_wand.mp3):

对PlaySoundAction 进行如下设置,Source 当然要选择magic_wand.mp3 文件:

类似的将PlaySoundAction 拷贝到另外12个Path 中,可以运行程序看看效果如何。

3. 最后我们来制作背景音乐,Wounds of the Past 是《鬼武者3》原声大碟中的一支歌曲,带有些神秘凄凉的感觉适合作为这个游戏的背景音乐,更主要的是Size 相对4~5M的文件来说比较小,做Demo 时加载速度会快些。

言归正传,首先需要在LayoutRoot 中添加一个MediaElement 控件命名为musicMediaElement ,用于播放背景音乐:

在Media 属性处选择Wounds_of_the_Past.mp3:

4. 运行程序后会发现背景音乐只播放一遍,其实我们是希望音乐能够循环播放,为了实现这个功能,为其创建一个循环播放的Behavior,在Interactivity 中创建ContinuousPlayMediaBehavior 文件夹,并增加ContinuousPlayMediaBehavior.cs

该Behavior 的关键就在AssociatedObject_MediaEnded,它在音乐结束后会将音乐时间设回到0,并重新播放:

public class ContinuousPlayMediaBehavior : Behavior<MediaElement>  {     public ContinuousPlayMediaBehavior() {}       protected override void OnAttached()     {         base.OnAttached();         AssociatedObject.MediaEnded += AssociatedObject_MediaEnded;     }       protected override void OnDetaching()     {         base.OnDetaching();         AssociatedObject.MediaEnded -= AssociatedObject_MediaEnded;     }       void AssociatedObject_MediaEnded(object sender, RoutedEventArgs e)     {         AssociatedObject.Position = new TimeSpan(0);         AssociatedObject.Play();     }  }

5. 将ContinuousPlayMediaBehavior 添加到musicMediaElement 中,即可实现循环播放效果:

源代码下载:

转载于:https://blog.51cto.com/186067/1280677

Silverlight 解谜游戏 之十四 音效相关推荐

  1. Silverlight 解谜游戏 之十六 消失的蒙娜丽莎

    在<Silverlight 解谜游戏 之三 消除名单>中我们通过在物品轮廓画出Path 来达到消除物品的效果,由于游戏中的物品都是Office 图片的一部分所以无法使其真正消失,本篇我们将 ...

  2. Silverlight 解谜游戏 之七 放大镜(3)

    在前两篇文章中,我们已经创建了"放大镜效果"和"放大镜CheckBox",本篇内容将通过CheckBox来控制放大镜效果的开/关状态,并完成全部"放大 ...

  3. Silverlight 解谜游戏 之十七 胜利界面优化

    在<Silverlight 解谜游戏 之九 胜利通关>一文中我们制作了一个"You WIN" 的游戏结束界面,细心的同学可能发现当找到最后一个物品后GoToStateA ...

  4. Silverlight 解谜游戏 之四 粒子特效

    前几篇一直在Blend中工作没体现出开发者的作用,本篇将为订书器(Stapler)添加自定义粒子效果,当订书器被点击时产生更好的视觉效果.其中将使用到nerdplusart 的Silverlight ...

  5. Silverlight 解谜游戏 之三 消除名单

    本篇将通过钢笔(Pen)工具为Office图片中的物品添加热点,当玩家找到图中物品时,通过ChangePropertyAction调整题板上的物品名称的不透明度(Opacity).下文以订书器(Sta ...

  6. Silverlight 解谜游戏 之十三 游戏暗示(2)

    完成本篇将实现如下效果: 2. 接上一篇内容,我们继续对暗示功能进行制作(通过光环动画进行暗示).点击"HINT" 后会在屏幕中出现光环对玩家进行提示: 2.1. 将光环图片fla ...

  7. 也谈网易“有道难题”在线解谜游戏

    今天下午忙活了一下午,参考各种资料,终于搞定了5-3到5-9的"有道难题"在线解谜游戏. 把解答列出来,方便以后回顾回顾. 答案有很多版本,有简单的有详细的. 简单的版本如下:(摘 ...

  8. 蓝桥杯决赛H解谜游戏

    第十届蓝桥杯b组C/C++决赛题目H解谜游戏 题目: 思路:通过题意可以知道,内圈转完4次(转完一圈),中圈转半圈,大圈转三分之一圈,那么可以知道,内圈零号位置对应中圈有两个位置,外圈有三个位置(即可 ...

  9. bugku 杂项 就五层你能解开吗_你能解开这个和数字有关的逻辑解谜游戏吗? | 每日一考...

    今天是一道和数字有关的逻辑解谜游戏看看你能用多长时间得到答案这道题的目标是,把网格根据数字划分成很多个方形小块. 每个数字都代表它所在的小块面积,也就是包含了几个小格子,要求如下图,每个小块里必须有, ...

最新文章

  1. 不容错过的Pandas小技巧:万能转格式、轻松合并、压缩数据,让数据分析更高效...
  2. powerdesign相关
  3. Android学习第十三天----ScrollView
  4. Google 开源下一代高安全性机密运算开发框架 Asylo
  5. python从入门到精通需要多久-Python从入门到精通:一个月就够了
  6. sqlite3在Python2.7下对于中文路径的支持
  7. Memcached(七)Memcached的并发实例
  8. Javascript 笔记与总结(2-8)对象2
  9. 【疾病分类】基于matlab SVM植物叶子疾病检测和分类【含Matlab源码 093期】
  10. 单片机原理及应用课程设计
  11. HCSE交换知识重点
  12. kux格式 linux,怎么把1080P的kux视频转换成mp4呢
  13. 微信小程序云开发--数据库使用
  14. 网络时钟同步系统概述
  15. 哆啦A梦纯HTML代码
  16. 又猎一“狐”:一名外逃越南嫌疑人落网-网易
  17. 一个故事搞懂Java并发编程
  18. 【微信开发】基于微信公众号的早起签到程序
  19. 篱笆(Fenced In)
  20. RandomResizedCrop

热门文章

  1. Java利用TreeMap实现统计种类
  2. adas技术实现途径_未来实现100%清洁电力的途径,带来巨大的健康和工作
  3. 【业务知识】数字档案馆建设内容
  4. 信息系统项目管理师优秀论文:项目整体管理
  5. 笔记-信息化与系统集成技术-区块链的特征
  6. 笔记-计算机网络基础-无线局域网标准IEEE802
  7. 5G的频谱效率,到底有多高
  8. 防止程序多开的两种方法
  9. Android中使用WebView加载本地html并支持运行JS代码和支持缩放
  10. Vue中组态实现方案-BaseMap的使用