ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:330KB ,
资源ID:3552798      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3552798.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SilverlightC#游戏开发:自定义鼠标.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

SilverlightC#游戏开发:自定义鼠标.doc

1、我们在游戏中经常应用自定义鼠标来提升游戏的画面品质,一个好的游戏怎么能没有好看的鼠标呢,关于 Silverlight 的各种自定义鼠标的方法很多,而我将为大家带来的是在游戏当中的应用效果,当然了,做法更加游戏化,先看下图:我们期望达到的效果是,鼠标移入不同的对象上显示不同的鼠标效果:在其他的文章中曾经看到过一些做法,都是习惯将一个控件绑定到 MainPage 的 MouseMove上,我所用做法也是一样,http:/ 但是较之更加 “密封” 一些,比如先创建一个 CursorBase 类(我是喜欢直接写代码,而不是用控件老搞定_ ):public class CursorBase : Canv

2、aspublic CursorBase(FrameworkElement parent)parent.MouseMove += new MouseEventHandler(parent_MouseMove);parent.Cursor = Cursors.None;Canvas.SetZIndex(this, 9999); http:/ /将父对象的鼠标移动事件增加到这里void parent_MouseMove(object sender, MouseEventArgs e)Point pt = e.GetPosition(sender as UIElement);X = pt.X;Y =

3、pt.Y;/一套简单的坐标控制public double Xget return Canvas.GetLeft(this); set Canvas.SetLeft(this, value); public double Yget return Canvas.GetTop(this); set Canvas.SetTop(this, value); 这是一个自定义鼠标的基本类,特别提一下构造函数添加的 FrameworkElement,这是代表MainPage 的父对象传入,当然了,也可以传入其他的元素做父对象,就要看你要将自定义鼠标应用在什么地方了。但是这只是通过代码写一个控件而已,如果呈现这

4、些图片呢,于是下面再写一个控制类:Model 控制类 public class CursorControl : CursorBasepublic CursorControl(FrameworkElement parent): base(parent)this.CacheMode = new BitmapCache();this.IsHitTestVisible = false;/添加一个鼠标模型public void AddCursorModel(string name, FrameworkElement model)this.Children.Add(model);if (this.Chil

5、dren.Count != 1)model.Visibility = Visibility.Collapsed;elsemodel.Visibility = Visibility.Visible;model.Name = name;/从图片添加鼠标模型public void AddCursorModelFromImage(string name, Uri uri)AddCursorModel(name, new Image() Source = new BitmapImage(uri) );/正在显示的模型名字string ModelName = “默认“;/获得正在显示的模型名字public

6、 string GetCursorModel()return ModelName;/设置要显示的鼠标模型public void SetCursorModel(string name)foreach (FrameworkElement item in this.Children)if (item.Name = name)item.Visibility = System.Windows.Visibility.Visible;ModelName = name;elseitem.Visibility = System.Windows.Visibility.Collapsed;这次直接操作 Childr

7、en 集合,通过外部添加的方式设置鼠标的不同状态和样式,这个类更多意义是封装了几个方法,以方便我们达到更便捷的操作,通过 AddCursorModel 增加样式模型,SetCursorModel 设置样式模式,在这个基础上,可以使用状态枚举等方式,但是都需要这些方法来操作样式,如果你需要 Remove,那么可以简单的自己写一个:)这里有一个特别需要提到的是关于 IsHitTestVisible,是用来阻止自定义鼠标的点击测试。下一步,将图片添加到工程当中:现在,我们写一个 MyCursor 类,构建我们所需要的样式的图片序列。我的鼠标 /我的鼠标public class MyCursor :

8、CursorControlpublic MyCursor(FrameworkElement parent): base(parent)base.AddCursorModelFromImage(“默认“, new Uri(“/CustomCursor01;component/Res/Cursor/“ + 0 + “.png“, UriKind.Relative);base.AddCursorModelFromImage(“禁止“, new Uri(“/CustomCursor01;component/Res/Cursor/“ + 1 + “.png“, UriKind.Relative);bas

9、e.AddCursorModelFromImage(“攻击“, new Uri(“/CustomCursor01;component/Res/Cursor/“ + 2 + “.png“, UriKind.Relative);base.AddCursorModelFromImage(“魔法“, new Uri(“/CustomCursor01;component/Res/Cursor/“ + 3 + “.png“, UriKind.Relative);base.AddCursorModel(“等待“, new WaitCursor();ThisCursor = this;public stati

10、c MyCursor ThisCursor = null;为了更加方便的控制自定义的鼠标,增加了一个 ThisCursor 用来保存最新的 Cursor,我通常认为界面中只有一个鼠标,所以这样做法更加直接明了,除非你使用了全局的控制方法:)WaitCursor 是一个 UserControl,里面加入了一些动画和效果,并不是所有的鼠标样式都是图片,而我们的方法中提供了对控件的支持,关于 WaitCursor 控件请下载源代码自行查看吧。下一步就是如何控制它们,现在我需要布局元素,然后为他们起上名字分别叫Item01、Item02、Item03、Btn_ShowWait,当鼠标移入的时候就可以直

11、接通过ThisCursor 来控制。但是,我们怎么能够控制这些样式,怎么在正确的调用 SetCursorModel 呢,难点在鼠标移入到一个元素,而不知道到底是什么应该触发什么鼠标的样式,为了解决这个问题,我们需要借助 Tag 这个 Silverlight 特有的属性。下面截选自 Silverlight4.0 的离线文档。于是,我们借助了一个小小的属性来完成不可告人之目的,也有更加暴力的方法就是为每个对象都增加一个独立处理的鼠标事件,但是很不好,如果游戏中的对象过多就不好办了,所以,越精简越封装越好。我只需将 MainPage.xaml 写成这样:在后台的 MainPage.cs 添加和修改如

12、下代码:MainPage.cs 代码 public partial class MainPage : UserControlpublic MainPage()InitializeComponent();InitializeMyPlace();this.CacheMode = new BitmapCache();LayoutRoot.Children.Insert(0,new Image() Source = new BitmapImage(new Uri(“/CustomCursor01;component/Res/map01.jpg“, UriKind.Relative) );LayoutR

13、oot.Children.Add(new MyCursor(this);public void InitializeMyPlace()Item01.Tag = “攻击“;Item02.Tag = “魔法“;Item03.Tag = “禁止“;Item01.MouseEnter += new MouseEventHandler(Item_MouseEnter);Item02.MouseEnter += new MouseEventHandler(Item_MouseEnter);Item03.MouseEnter += new MouseEventHandler(Item_MouseEnter)

14、;Item01.MouseLeave += new MouseEventHandler(Item_MouseLeave);Item02.MouseLeave += new MouseEventHandler(Item_MouseLeave);Item03.MouseLeave += new MouseEventHandler(Item_MouseLeave);Btn_ShowWait.Click += new RoutedEventHandler(Btn_ShowWait_Click);void Btn_ShowWait_Click(object sender, RoutedEventArgs

15、 e)if (MyCursor.ThisCursor.GetCursorModel() = “等待“) MyCursor.ThisCursor.SetCursorModel(“默认“);elseMyCursor.ThisCursor.SetCursorModel(“等待“);void Item_MouseEnter(object sender, MouseEventArgs e)MyCursor.ThisCursor.SetCursorModel(sender as FrameworkElement).Tag as string);void Item_MouseLeave(object sender, MouseEventArgs e)MyCursor.ThisCursor.SetCursorModel(“默认“);还有一个 WaitCursor 控件,请直接看源代码吧,源代码下载如下:点击这里下载现在运行效果看看怎么样呢,鼠标在上面移动看看:到此,我们可以基本上完成了游戏中的自定义鼠标的雏形开发工作,关于 Tag 可以使用自定义的结构体来带入相关信息,毕竟对象所需要的内容是很多的,在下个关于自定义鼠标的文章中,我们一起研究一下拾取和拖拽的制作方法。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。