在这一节中,将会使用上故事板、变换、属性等部分,一起使蝴蝶的翅膀扇动,看起来更加自然,现在我们开始吧,在本文的最后面,会有源代码和Silverlight演示。

首先先简单设计一下界面,更加细致的设计工作我们在最后做调整,用Rectangle简单进行绘制,得到界面,然后就这么放着吧,我们最后才会使用上。

  现在建立蝴蝶的控件,目的是将动画整合(如果不好理解控件的话,你可以理解成它就是Flash的影片)

  创建新控件,将名字命名为Butterfly,在"对象和时间线"界面选择UserControl,在属性里讲Width和Height设置成为128,而不是自动,因为自动会造成我们很多麻烦事,蝴蝶本身只有128x128。

  然后将蝴蝶图片托到框中对齐左上,复制一个放在右边,下面我们做镜像操作。

  在属性界面中选择“变换”,找到镜像的小图片,选择X轴翻转。

  下面我们要实现蝴蝶扇动的效果,因为扇动是一个类似挤压放缩的效果(这里没有用Projection,为的是更加容易理解,在未来的篇章中会专门介绍Projection)。

  如上图所示在扇动是按照中心放缩,如果你将一个轴进行放缩,那么对齐中心点就不是中心点,Blend为了更好的理解使用整数1来表达整体,0.5代表的就是中心,将变换中心点设置到最右边数值就是x:1,y:0.5,你会看到中间有一个小点移到右边中心的位置,这时发生的放缩效果就以此为基准了,你可以尝试调整一下放缩中的X部分,很有趣吧,但是需要注意的是另外一半因为经过了翻转,所以对齐点就不太一样了,上面左下图做了一个简要的说明。

  做动画,蝴蝶的一个翅膀,然后选择建立新的故事板,输入Flap(扇动)的动画名,添加关键帧,选择相应的时间轴,将对应的属性进行修改,注意,你可以看到整个画布是用红色框起来的,表示为动画操作模式,此时所有操作都会有可能记录成为动画上的关键帧,在设置完成以后,我们看看效果。

  将两边的动画都做好了以后,直接选择对象和时间线的动画名字,你会发现属性的设置界面内容发生变化,将AutoReverse构选上,这时的播放会自动播回去,咱们就不用再建立新的帧了。

   然而,我们播放的效果却是很单调,为了丰富它和让动画看起来更加真实,再添加一个帧,并且将轨迹设置成前慢后快的曲线,这样看起来就有点意思了。

  下面我们实现一组代码,这组代码将实现如下的功能:

  • 简单的播放方法
  • 可以改变属性直接改变图像

  可能我这么说并不直观,先按照下面的代码敲进去吧:)

  注意上面有一行引用命名空间,这会决定BitmapImage是不是可以用,当然了,还有image和image1都是系统的名字,如果改了名字不要忘记改回来:)

  好了,这次咱们将控件放到界面中,选择MainPage,然后从资产中找到Butterfly控件,如果你没找到,可以输入快速查找——如果还没找到,重新编译一下项目就能看见。

  放入之后,我们就会用上刚才设置的属性了,选择刚刚放入的蝴蝶,然后在属性面板里选择杂项,看,出了一个编号,尝试修改一下,哈,蝴蝶变成对应的了,这是Blend提供的公用默认属性的设置,可以将public的属性变成杂项直接进行操作,这样我们可以很容易控制控件的各种默认状态。

  现在摆出一个界面看看效果:

  还是老样子,如果需要,请自行下载源代码文件,请使用Blend打开,由于这个项目不是独立项目,你可能需要独立建立一个sln工程来搞定它。

  这一次可能没有看到扇动效果到底是什么样的,包含上面的源代码文件也没有,但是你可以在下面看到我们在未来准备实现的效果,期待第10节吧:)

Silverlight C# 游戏开发:Flyer09扇动翅膀的蝴蝶相关推荐

  1. Silverlight C# 游戏开发:项目开发实例和小技巧索引

    Silverlight C# 游戏开发:项目开发实例和小技巧索引 相比于技术文章而言,本索引中包含的都是独立的项目,争取按照每个独立的项目开发来编写系列,全部为原创,开发过程可能语无伦次,可能相当幼稚 ...

  2. Silverlight C# 游戏开发:Flyer10完成寻找工作

    Silverlight C# 游戏开发:Flyer10完成"寻找"工作 上一次我们一起搞定了动画的一些效果,在最后给出了一排蝴蝶的随机扇动,今次我们一起研究一下互动元素的制作,完成 ...

  3. Silverlight C# 游戏开发:Silverlight开发环境

    Silverlight C# 游戏开发:Silverlight开发环境 所谓工欲善其事必先利其器,没有好的工具也没有办法做事,我以前曾经想学习C++以外的程序语言,当时有java和C#来选择,当时考虑 ...

  4. Silverlight C# 游戏开发:方向键的组合,八方向实现

    Silverlight C# 游戏开发:方向键的组合,八方向实现 在游戏中,有一种情况是斜向移动,就是同时按下两个方向,形成斜线操作,在Win32GDI开发中,可以通过在逻辑循环里加入键盘状态判断取得 ...

  5. Silverlight C# 游戏开发:L2 自定义模型导入

    Balder的Geometries里提供了很多的已有的模型,比如立方体.圆柱等等,但是我们在开发游戏的时候大多情况下都是使用3D设计工具制作自定义的3D模型,而本篇则介绍的是如何导入显示一个自定义的3 ...

  6. Silverlight C# 游戏开发:资源的处理,图像算法(二)

    Silverlight C# 游戏开发:资源的处理,图像算法(二) 也许说,图像算法很过时,那是许久以前的做法,可是作为Silverlight来说,我认为非常有用,这些有趣的处理就像是在Web上实现了 ...

  7. Silverlight C# 游戏开发:面向对象在游戏中的实例(一)

    本系列所有代码都是使用Microsoft Visual Studio 2008开发,为基于Silverlight的游戏开发技术,如果您看完之后觉得不错,回复顶一下,万分感激:) 今天,我将带来一个非常 ...

  8. silverlight 3D 游戏开发

    http://www.postvision.net/SilverMotion/DemoTech.aspx silverlight 3D 游戏开发 时间:2010-10-22 06:33来源:开心银光 ...

  9. Silverlight C# 游戏开发:关于精灵for Silverlight容器

    Silverlight C# 游戏开发:关于精灵for Silverlight容器 说明:素材来源于网络,版权归版权所有人所有 游戏中的精灵非常常用,spirit这个小玩意具体谁发明的不得而知,从游戏 ...

最新文章

  1. 设计模式之工厂方法模式学习笔记
  2. 如何通过AppDomain用特定的安全上下文加载外部程序集
  3. mysql报错无效默认值1067_Mysql 报错:#1067 - Invalid default value for 'update_time
  4. 需求用例分析之八:用例颗粒度
  5. 2011年全国软件大赛模拟题及参考答案(Java本科组)
  6. 未来教育计算机二级Excel解析,Excel操作小技巧,助你学好计算机二级office!
  7. LIS 的 n*log 算法 ———二分维护
  8. VM安装ubuntu18.04完成时不能上网,显示cable unplugged
  9. 超硬核直播课 | 自主旋翼无人机主流算法、视觉SLAM基础
  10. Android开发——搭建最新版本的Android开发环境
  11. APP通用测试用例编写
  12. 电脑主机插入耳机无声音
  13. 微信聊天功能软件测试用例,软件测试用例实例之常见功能测试点
  14. word无法在公式编辑器中输入字符
  15. 尚硅谷YYDS (视频连接)
  16. java http 401_401 API请求状态错误
  17. glassfish插件_Maven嵌入式Glassfish插件-未启动
  18. upupoo启动不了 mysql_显示桌面快捷方式
  19. 攀藤 5003粉尘激光传感器arduino使用
  20. win10+vs2017配置MPI和OpenMP

热门文章

  1. VTK:图片之ImageMapper
  2. VTK:图片之FillWindow
  3. 使用Qt Designer编辑资源
  4. Qt Creator分析CPU使用率
  5. C语言线性插值lerp算法(附完整源码)
  6. C++赋值运算符重载
  7. PhysicsJoint
  8. 5.Boost之“资源申请即初始化” RAII
  9. 基于XML配置的Spring MVC(所需jar包,web.xml配置,处理器配置,视图解析器配置)
  10. 在tnsnames.ora中配置监听