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

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八) 完美精灵之八面玲珑(WPF Only)②

 2010-10-01 07:07:47 来源:WEB开发网   
核心提示: 该方法根据精灵当前的动作状态是5大动作中的哪个进而对精灵的切图参数进行修改,从而达到改变窗口中显示精灵相应动作动画的效果,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八) 完美精灵之八面玲珑(WPF Only)②(7), Timer_Tick()事件

该方法根据精灵当前的动作状态是5大动作中的哪个进而对精灵的切图参数进行修改,从而达到改变窗口中显示精灵相应动作动画的效果。

Timer_Tick()事件中判断完精灵动作状态后,就需要动态的配置精灵的图片源了:

    Body.Source = Source[(int)Direction, FrameCounter];

Source的第一个参数为精灵当前的朝向,第二个参数为帧推进器。有的朋友就问了:前面增加的属性中并没有Direction这个属性呀?是的,我就是为了突出该属性的重要所以特别在此再申明,具体如下:

        //精灵当前朝向:0朝上4朝下,顺时针依次为0,1,2,3,4,5,6,7(关联属性)
        public double Direction {
            get { return (double)GetValue(DirectionProperty); }
            set { SetValue(DirectionProperty, value); }
        }
        public static readonly DependencyProperty DirectionProperty = DependencyProperty.Register(
            "Direction",
            typeof(double),
            typeof(QXSpirit)
        );

跟着我教程学习的朋友一看就知道它是一个关联属性(参考第十五节),为什么需要将精灵的朝向单独作为一个关联属性来定义?因为我将在主角的Storyboard移动动画中对精灵的方向进行时时修改,以使得寻路移动动画更加平滑(本例中的Storyboard仍然沿用DoubleAnimation类型逐帧动画,而不是objectAnimation类型;因此为了与前面章节更好的兼容,Direction在此设置为double类型。)。

OK,至此已经写了那么多属性和方法,休息休息看一下我们的成果吧:

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八) 完美精灵之八面玲珑(WPF Only)②

终于看到了久违的主角站立动作,是否有种感动得想要流涕的冲动?再看一张

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八) 完美精灵之八面玲珑(WPF Only)②

虽然我们可以通过点击地图上的点进行移动,但是无论如何移动,主角的方向始终都是朝着0(即北)这个方向的。那么如何利Direction这个关联属性让主角在任何动作中均可以显示正确的朝向?请听下回分解。

上一页  2 3 4 5 6 7 

Tags:开发 WPF Silverlight

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