文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>silverlight游戏设计(二)资源管理篇(补充)--图片帧序列资源包解析与图片资源处理

silverlight游戏设计(二)资源管理篇(补充)--图片帧序列资源包解析与图片资源处理

时间:2010-12-26  来源:姜 萌@cnblogs

StreamResourceInfo

一个mmorp 游戏的资源是非常多且杂的。比如单说玩家职业就可能有5、6种,每种又分性别,对于一个精灵而言,至少要准备是5个方向的帧序列动画图片(比如上,下,左,左上,左下。对于右边,右上和右下用前几种直接翻转即可),而动作上还能细分出站立、跑、战斗、死亡……。所以我们需要对资源进行归并、打包。这样不仅便于项目文件管理,而且还能减少文件尺寸(不过对图片并不明显)。

System. Windows.Resources这个命名空间提供了对silverlight资源进行处理的类型。里面有个StreamResourceInfo类,ok,这就是我们用来处理资源的利器。

StreamResourceInfo能够解析的是一个zip文件(xap其实就是zip,所以同样能解析xap),通过GameImageResService抓起目标资源包,得到一个stream,就可以构造StreamResourceInfo对象,进一步对于资源包里的文件我们都可以通过其URI得到相应的流对象,比如下:

StreamResourceInfo info = new StreamResourceInfo(stream, null);
                using (var reader = new StreamReader(Application.GetResourceStream(info, new Uri(IMG_ZIP_XML, UriKind.Relative)).Stream))
                {

……

图片帧序列资源包以及图片包配置文件

StreamResourceInfo是我们解析资源包的基础,接下来定义动画图片资源包的结构:

图片文件名既是帧序号,resconfig.xml的文件中定义每一个图片的中心点偏移等信息。

silverlight中解析xml

.net中解析xml的方式有很多,不仅提供了流式和DOM解析的api,还有linq2xml。固然后两种方式解析xml最为简单方便,但是需要添加额外的程序集引用(System.Xml.Linq.dll是100+KB),使整个项目大了不少,对于身材本来就瘦小webgame来讲已经很大了,所以我们还是选取流式读取(当然具体情况要结合您自身的项目)

code

一些有用的技巧

切割图片

得到一个图片进行角度旋转后的副本

得到一个图片进行水平翻转后的副本

相关阅读 更多 +
排行榜 更多 +
孤岛末世求生

孤岛末世求生

飞行射击 下载
瓶子射击挑战

瓶子射击挑战

飞行射击 下载
专业枪手

专业枪手

飞行射击 下载