说明:素材来源于网络,版权归版权所有人所有
游戏中的精灵非常常用,spirit这个小玩意具体谁发明的不得而知,从游戏开发的角度上,精灵可以帮助开发者便捷的完成开发工作,Silverlight基于MVC体系,控件就成了游戏开发者们理想的精灵,然而,具体用什么来构成精灵的基础,让我们来研究一下。
在那之前,我们先准备一下素材,一组足够长的动画资源:
Silverlight提供了如下容器:Grid、Canvas、StackPanel、Border、ScrollViewer,其中只有Grid和Canvas符合游戏精灵的容器,至于为什么,请参看后面三个的MSDN说明以及用法。
Grid和Canvas能够为作为精灵容器,但是它们之间有着很明显的区别,从字面意义上讲Grid是格子,Canvas是画布,Grid提供的控制内部元素的方法是通过边距进行,而Canvas是通过笛卡尔坐标系坐标,其实就是初中书本上的直角坐标系,关于Grid和Canvas之间的不同,来看下面的图片:
Grid定制内部元素的对齐样式和边距来锁定位置,如图所示即便是Grid发生变化,内部元素也会按照边距进行宽高调整,除非解锁边距(设置对齐方式),Gird有个好处在于如果图片宽高固定,可以固定内部的对齐坐标,比如底部对齐这就比较方便我们管理,用图形的方式表示为:
如果用Grid作为容器实际运用到Silverlight当中图片显示如下:
Canvas的景象则是另外一番,毕竟使用的纯粹的坐标画布,无非是位置问题,即便Canvas的大小为0,内部的元素仍然能够显示,所以这也是大多Silverlight开发者喜欢用Canvas的原因,毕竟清楚明了,只需要做偏移即可,下面是一张图片,可做参考:
无论是Grid还是Canvas,作为精灵的容器应该是依据不同的需要进行选择,StackPanel在特定情况下作为精灵容器也不失为一个好的选择,制作精灵是的最终目的是为开发游戏方便,能够解决我们问题才是最终的需求,比如下述的情况,该如何用选择呢?
如果真是一个可以换装的网络游戏,那么上面的情况就不得不详加考虑,因为动作造成身体的各个部分不是按照特定坐标进行转换,或者对齐,最终需要一个完美的解决方法来搞定它们,如果只是做一个简单的游戏,则就无需大费周章,最好的解决方案是多种类型的容器,可以依据不同的需求调动……总的来说,游戏开发考验自身的时候到了:)
本文转自nowpaper 51CTO博客,原文链接:http://blog.51cto.com/nowpaper/712603