您好,欢迎访问三七文档
C#开发WPF/Silverlight动画及游戏系列教程(GameTutorial):(三)让物体动起来③第三种方法,DispatcherTimer动画,该类型动画与CompositionTarget动画类似,是基于界面线程的逐帧动画,但他与CompositionTarget动画不同,DispatcherTimer动画可以轻松的进行参数设置:xaml界面代码仍然沿用第一节的,那么接下来我们在后台代码中创建相关对象:Rectanglerect;//创建一个方块作为演示对象doublespeed=5;//设置移动速度PointmoveTo;//设置移动目标publicWindow3(){InitializeComponent();rect=newRectangle();rect.Fill=newSolidColorBrush(Colors.Red);rect.Width=50;rect.Height=50;rect.RadiusX=5;rect.RadiusY=5;Carrier.Children.Add(rect);Canvas.SetLeft(rect,0);Canvas.SetTop(rect,0);//定义线程DispatcherTimerdispatcherTimer=newDispatcherTimer(DispatcherPriority.Normal);dispatcherTimer.Tick+=newEventHandler(Timer_Tick);dispatcherTimer.Interval=TimeSpan.FromMilliseconds(50);//重复间隔dispatcherTimer.Start();}privatevoidCarrier_MouseLeftButtonDown(objectsender,MouseButtonEventArgse){moveTo=e.GetPosition(Carrier);}privatevoidTimer_Tick(objectsender,EventArgse){doublerect_X=Canvas.GetLeft(rect);doublerect_Y=Canvas.GetTop(rect);Canvas.SetLeft(rect,rect_X+(rect_XmoveTo.X?speed:-speed));Canvas.SetTop(rect,rect_Y+(rect_YmoveTo.Y?speed:-speed));}与上一节的代码类似,不同的地方其实也就是声明动画线程处,共4句:DispatcherTimerdispatcherTimer=newDispatcherTimer(DispatcherPriority.Normal);dispatcherTimer.Tick+=newEventHandler(Timer_Tick);dispatcherTimer.Interval=TimeSpan.FromMilliseconds(50);dispatcherTimer.Start();第一句申明一个界面计时器DispatcherTimer,并且设置其线程优先级别为Normal,这是标准设置,你可以根据你自己的需求进行更改,一共10个级别。第二句注册Tick事件,也就是计时器间隔触发的事件。第三句设置Tick事件的间隔,可以有很多方式,我使用的是TimeSpan.FromMilliseconds(),即间隔单位为毫秒。第四句启动线程。是不是很简单?这样的话可以很轻松的通过Interval来控制刷新一个对象属性的频率了。接下来我们同样使用Ctrl+F5来测试一下成果。呵呵,结果和第二种动画方法是一样的,存在同样的问题,因为毕竟两种动画的原理是一致的。那么到此,三种动态创建动画的方法都已经详细介绍过了,大家可能会有种感觉,比较钟情于第一种WPF/Silverlight推荐的Storyboard动画,既直观又方便使用,而且仿佛不易出错。其实这3种动画都有它特定的使用场合。第一种动画适合创建简单的对象位移及直接性质的属性更改(在后面的教程中,我还将更深入的挖掘Storyboard动画的潜力,动态创建更复杂的基于KeyFrame的关键帧动画)。第二种动画适合全局属性的时时更改,例如我们后面要讲到的敌人或NPC以及地图等全体性的相对位移及属性更改时就要用到它了。第三种动画则非常适合运用在Spirit(角色)的个人动画中,例如角色的移动,战斗,施法等动作。小结:前三节分别讲解了Storyboard动画,CompositionTarget动画,DispatcherTimer动画,并横向分析了不同的场合对应不同的动画应用模式,这些将是构成WPF/Silverlight游戏引擎的基础。下一节我将介绍如何使用DispatcherTimer动画让对象活起来,敬请关注
本文标题:C#开发WPFSilverlight动画及游戏系列教程(Game-Tutorial):(三)让物体动
链接地址:https://www.777doc.com/doc-6314662 .html