C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八) 完美精灵之八面玲珑(WPF Only)②
2010-10-01 07:07:47 来源:WEB开发网该方法根据精灵当前的动作状态是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,至此已经写了那么多属性和方法,休息休息看一下我们的成果吧:
终于看到了久违的主角站立动作,是否有种感动得想要流涕的冲动?再看一张
虽然我们可以通过点击地图上的点进行移动,但是无论如何移动,主角的方向始终都是朝着0(即北)这个方向的。那么如何利Direction这个关联属性让主角在任何动作中均可以显示正确的朝向?请听下回分解。
Tags:开发 WPF Silverlight
编辑录入:爽爽 [复制链接] [打 印]- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››WPF学习笔记12. Binding (5)
- ››WPF学习笔记11. Binding (4)
- ››WPF学习笔记10. Binding (3)
- ››WPF学习笔记9. Binding (2)
- ››WPF学习笔记8. Binding
更多精彩
赞助商链接