WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game T... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十四)制作主角属性面板及加点器

 2010-09-30 22:36:17 来源:WEB开发网   
核心提示: 运行时效果:查看原图(大图)很棒吧?嘿嘿,在角色属性面板里除了显示角色的属性值等个人资料外,C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十四)制作主角属性面板及加点器(4),还有装备管理及属性加点器两个重要部分,关于装备,且这些动作以Interva

运行时效果:

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十四)制作主角属性面板及加点器

查看原图(大图)

很棒吧?嘿嘿。在角色属性面板里除了显示角色的属性值等个人资料外,还有装备管理及属性加点器两个重要部分。关于装备,后面的章节再细说。下面我向大家讲讲如何制作这个属性加点器。

如果不论样式,我们直接可以使用官方提供的NumericUpDown控件即可,该控件非常强大,看了它的源码,其本身为一个组合控件,由4大部分组成:文本(TextBlock)、文本容器(ContentPresenter)、加按钮(RepeatButton)及减按钮(RepeatButton),且模式很多,你能想到的基本都有。当然同样的,要重写它的样式实在是麻烦之事,其实该控件的重点就就在RepeatButton上,如何实现这个Repeat动作又是关键中的关键。我们不妨从它的原理出发,当鼠标在此按钮上按下时开始计时,如果鼠标一直未放开,则当到达预先设定的Delay时间间隔后即触发后面的连续重复动作,且这些动作以Interval为间隔不断重复下去直到鼠标左键被放开或鼠标离开该控件。此时,我又想到了美丽的QXIcon,再次为它添加一种新模式:IconTypes.RepeatButton:

case IconTypes.RepeatButton:
DispatcherTimer timer = new DispatcherTimer();
  timer.Tick += (s, e) => { timer.Interval = TimeSpan.FromMilliseconds(Interval); RepeatClick(this, e); };
  this.MouseEnter += (s, e) => { Container.Background = NewSource; };
  this.MouseLeave += (s, e) => { Container.Background = _BodySource; timer.Stop(); };
  this.MouseLeftButtonDown += (s, e) => { timer.Interval = TimeSpan.FromMilliseconds(Delay); timer.Start(); };
  this.MouseLeftButtonUp += (s, e) => { timer.Stop(); e.Handled = true; };
break;

上一页  1 2 3 4 5  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接