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

上一次我们一起搞定了动画的一些效果,在最后给出了一排蝴蝶的随机扇动,今次我们一起研究一下互动元素的制作,完成初步能够互动的环节,这些过程用Blend做,就变得非常快速和容易,今次我们一起研究如何使用Blend制作Silverlight的事件,来达到我们期望的选定以及打乱动画的需求。

现在,我们先调整一下前面的工程,将界面布局完成,然后放入一个命名为Target的蝴蝶控件,用来标示到底哪个是要选择的目标。

现在将蝴蝶布置好,然后将他们都放置到一个Canvas当中,用Grid也可以,命名为ButterflyGoup,在后面我们用它来完成所有的蝴蝶扇动效果,做对象检索用,要将所有的Butterfly控件放在这个容器当中。

在MainPage.xaml.cs中加入下面的代码,很简单,只是一个定时器,做一个循环,这个循环用来产生随机的扇动效果。

上面的代码详细如下:

上面的代码

public MainPage()
{
    // 为初始化变量所必需
    InitializeComponent();

DispatcherTimer Loop = new DispatcherTimer();
    Loop.Tick += new EventHandler(Loop_Tick);
    Loop.Interval = TimeSpan.FromSeconds(4);
    Loop.Start();
    RandomTarget();
}

void Loop_Tick(object sender, EventArgs e)
{
    Random rm = new Random((int)DateTime.Now.Ticks);
    int i = 0;
    while (i < 5)
    {
        i++;
        int j = rm.Next(0, ButterflyGroup.Children.Count);
        Butterfly tmp = ButterflyGroup.Children[j] as Butterfly;
        tmp.FlapAnimation();
    }
}

简单讲解一下,我们使用了一个范围为1-12的随机数,然后循环5次,每次取得ButterflyGroup容器的Children中的一个(注意,我们认定这里只有Butterfly控件),激活Flap动画,这个随机每4秒钟产生一次,以取得相应效果,运行起来就和上节中最后的Silverlight效果一致了。

我们需要一些互动环节,比如鼠标选定的操作,下面,我们开始做鼠标移入和移出的效果。

打开蝴蝶控件,选择LayoutRoot添加一个投影特效,设定效果。

创建一个动画,名字随便起,我用的是Ani_MouseEnter和Ani_MouseLeave,调时间轴,变化BlurRadius的数值,产生一个外圈扩散光圈的效果,注意移出和移入是相反的。

形成两个动画,入下图,Flap2是无用的,以前的不用管它。

现在控件鼠标移入和移出的时候产生相应的效果,通过鼠标事件来完成,在下面添加一个事件命名(这个命名是任意的),然后按回车。

将会进入到cs文件编辑界面当中,同理加入Leave的事件,分别加入Ani_MouseEnter.Begin()和Ani_MouseLeave.Begin()

好了,现在鼠标移入和移出的时候就会播放相应的动画,下面回到MainPage中,选择一个蝴蝶控件,在MouseLeftButtonDown加入一个SelectedButterfly事件,也就是说,当鼠标按下去的时候选择的控件会调用这个事件。

我们为每个控件,一共是12个全部加入这个事件方法,名字都是一样的,这样无论按下那个都会调用那个方法,但是我们怎么知道是哪个调用的呢?我们可以通过sender来取得,在Silverlight当中,Sender会告诉我们那个控件调用事件方法,因为只有蝴蝶会调用,只需要将sender做一下转换,sendr as Butterfly,当然安全考虑,可以做一个if(sendr is Butterfly)判断。

OK,现在我们有一个需求,要打乱12个蝴蝶排列,要做一个方法,下面代码中RandmTarget()方法来实现。

上面的代码中,要想达到一个随机打乱,在这里我们使用一个List临时记录随机数,然后将1-12放到到这个列表中,当然了,随机12以内的数字时,使用这个临时的List做检索,如果不存在这个数字就将其放到队列中,队列数满足12个就停止这个循环,这里用了一个%(取余)来取得一个12数字以内的功能。

当然了这个算法还有另外一种方式,就是从头循环,随机和12的范围内进行交换,进行几次后就乱了,我这里用的方法比较简单。

下面是直接的Silverlight效果,加了一些有趣的修饰,基本上来说和上面的制作方法相同,无非是在.xaml.cs代码中加几行而已,源代码在这里,下载参考。

posted on 2010-03-25 12:28 nowpaper 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/nowpaper/archive/2010/03/25/1687978.html

Silverlight C# 游戏开发:Flyer10完成寻找工作相关推荐

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

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

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

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

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

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

  4. Silverlight C# 游戏开发:无尽的夜空

    Silverlight C# 游戏开发:无尽的夜空 注:本篇是扯文,没技术性,如果你对省略号过敏,可以直接跳过. 这是一场密谋已久,必将经历的战争,战场就在这个和现代人密切相关的互联网,随着WEB的发 ...

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

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

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

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

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

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

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

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

  9. silverlight 3D 游戏开发

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

最新文章

  1. pygame里面物体闪烁运动_教师资格【试讲示范】高中物理试讲答辩——《自由落体运动》试讲稿答辩...
  2. [转]WinXP、Win7脚本自动加域及用户资料迁移
  3. 阅读《构建之法》1-5章
  4. PHP中如何配置smarty框架实现PHP代码和HTML代码分离
  5. 手写springmvc
  6. 【Arduino】开发入门教程【六】数据类型转换函数
  7. 领域驱动设计之单元测试最佳实践(二)
  8. 写好数据分析报告,数据的思路非常重要
  9. 【正在直播】:CSDN直播间专属福利!1399买Airpods Pro
  10. c#学习-base和this在构造函数中的应用
  11. 统计学习(二):统计推断
  12. vc++ 6.0 三次bezier曲线绘制_Python matplotlib绘制散点图
  13. 固态硬盘用软件测试掉速严重,分析固态硬盘掉速原因及解决方法
  14. easyscreen调用html,840D——EasyScreen输入密码跳转界面的编写-工业支持中心-西门子中国...
  15. Python——循环遍历多个列表实现字符的组合拼接
  16. 网络安全论文投稿给电脑编程技巧与维护有哪些要求
  17. html页面使用地图,前端PC端使用地图步骤(高德)
  18. 微信扫描普通二维码进入小程序
  19. Quasi-Monte Carlo Image Synthesis in a Nutshell——低差异序列
  20. biomarker研究思路

热门文章

  1. python输出字典_Python如何将字典键和值拆分为单独的列表?(代码示例)
  2. linux mysql utf-8编码_笔记:linux下mysql设置utf-8编码方法
  3. python字符串函数split_Python常见字符串操作函数小结【split()、join()、strip()】
  4. using c++11 standerd in qt
  5. java记住用户名和密码_JAVA--高级基础开发Cookie实现记住用户名和密码
  6. 用c语言ipv6组播,需要适用于iOS 9的IPv6组播C代码
  7. python创建虚拟环境jupyter_创建 python 虚拟环境以及对应的 jupyter notebook kernel
  8. 识别速度3.6ms/帧!人像抠图、工业质检、遥感识别,用这一个分割模型就够了...
  9. Github Star 4.6K,3.5M超超轻量中英文OCR模型开源,火了!
  10. python的networkx 算法_python图算法库Networkx笔记 - Node and Centrality