FlexLite Studio使用教程(二):素材资源管理

Posted on January 12, 2014

上一篇教程《FlexLite Studio使用教程(一):初始化编辑器》中,我们提到了FS是单独管理一套素材资源的,这里我们就来讨论下如何使用FS管理素材资源。

一.资源库面板

FS的“资源库”面板如下,界面比较简单,顶部是预览区域,预览区下方是影片剪辑预览按钮和搜索框。最下方是资源删除按钮和刷新资源库按钮。资源库以文件方式显示,一个文件可能包含多少素材。选中一项素材,可以直接拖拽素材到界面上。导入FS的资源,都存储在目标AS项目的project/resource/目录下,你可以提交这个目录让其他人更新你增加的素材,如果更新时FS已经打开,可以使用“资源库”面板的刷新按钮来读取更改。为避免不必要的兼容问题,建议尽量使用FS自带的管理功能来导入素材资源,展开菜单栏的“资源”,我们可以看到两种导入资源的方式,后面会分别说明它们的用途。

FS_asset2

二.添加已有资源

使用“添加已有资源”功能,可以直接添加位图,SWF,DXR等素材资源到“资源库”内。

1.对于位图文件,FS会根据它的图像数据计算出唯一的效验码作为导入后的文件名,例如:IMG__234F2D32.png。这样是为了确保外观相同的图片不会重复导入。

2.对于SWF文件,FS直接添加,不做任何额外操作。FS通过SWF文件的导出类名列表来读取素材。所以,请确保已为所有影片剪辑元件都设置好导出类名。这里还要提醒下,这种添加方式下,SWF文件的舞台请必须为空,不要放置任何影片剪辑元件,否则加载时容易造成内存泄露问题。

3.对于DXR文件,也是直接添加不做任何操作。这里我们简单介绍下DXR文件:

DXR是对SWF的影片剪辑位图化得到的位图动画文件。可以是单帧,也可以是多帧。它同时记录了影片剪辑的九宫格和帧标签等信息。具体的文件结构参考:DXR文件结构。FlexLite框架内提供了可选的DXR库来解析和显示这种动画文件(参考org.flexlite.domDisplay包下的内容)。通常,只要在SkinAdapter里配置一次,你在整个项目中就不会感觉到它的存在。当然,你也可以自定义自己的解析库来显示DXR文件。推荐首选这种文件作为UI素材,因为配合Dll加载库,DXR可以做到相同外观的素材在全局范围内都只占一份内存,动态共享,自动销毁。而用SWF导出类的方式,每次new一个对象都会增加一份内存占用。我们都知道位图的内存占用只对面积敏感,而大部分UI素材都可以做成面积很小的影片剪辑,然后后加上九宫格无损放大使用。所以只有少量总面积非常大且无法使用九宫格的素材,我们才使用SWF里的矢量版本。

三.从SWF舞台导入

使用“从SWF舞台导入”,可以同时生成素材的SWF矢量版本和DXR位图版本,并添加到“资源库”。

使用这种方式添加素材,与前一种方式的处理正好相反,必须把要导入的影片剪辑摆放在SWF舞台上,而导出类名可以不填。因为FS会读取舞台上的影片剪辑,生成新的SWF文件,并自动帮你填写好导出类名(新生成的SWF文件舞台是空的)。这里的导出类名同样是根据素材的外观计算得到的唯一效验码。例如:SWF__234F2D32。而在生成SWF文件的同时,还会帮你同时位图化一份,生成对应的DXR文件。DXR文件也包含多个素材元件,导出类名与SWF版本元件一一对应,只有前缀不一样,例如之前那个影片剪辑对应的DXR导出类名为:DXR__234F2D32。

“从SWF舞台导入”应该是你最常用的素材资源导入方式。好处有这几点:

1.省掉在Fla里一个个命名导出类名的时间。

2.FS是根据素材外观计算导出类名。所以你不会重复导入外观相同的素材,同时减少加载量和内存占用。

3.生成的DXR文件的导出类名与SWF版本一致,当你想把一个素材在矢量和位图版本间切换时,只需要改下类名前缀即可。

四.发布资源到项目

素材导入“资源库”了,在制作完皮肤后,我们还需要点一下“资源”菜单里的“发布资源到项目”来发布素材,你会看到下面的窗口

FS_publish

简洁明了,没有什么需要解释的吧?按确定FS就把资源发布到之前设置好的路径里,并修改好Dll配置文件了。这么简单一个操作为什么不自动化实现呢?因为“时间点”很重要,你在制作完皮肤前,可能摆放了很多最后不用的素材,都被删除了。如果提早发布资源,会把那些用不着的素材也发布到项目中。

这次的教程到这里就结束了,应该覆盖到这段时间被提的最多的问题了吧?有任何疑问欢迎给我留言,提问比较多的我会在下一篇教程中重点说明。:D