Tui-x 资源管理

原文地址:http://blog.csdn.net/ab342854406/article/details/37988363

注:本文的内容是已HelloTuiCpp为例子讲解。
Tui-x 的在资源管理上做到了给开发者最大的自由,那就是全部由开发者管理。别误会,这是灵活的表现。如果用ccs打包纹理,你会发现有很多空白浪费的纹理,而且不能选择RGBA4444或pvr等纹理压缩。Tui-x的做法比较通用,用打包纹理时只会获取SpritFrame,具体是怎么来的一律不管。另一方面,在ccs里你想重用一个按钮,你需要单独为这一个按钮导出png和json,相当麻烦,也不科学。

1.如何用SpriteFrame来创建控件
Tui-x创建控件时候有两种模式,一种是普通纹理图,一种是打包纹理。使用打包纹理图你需要自己先用TexturePacker对散图进行打包,注意,Tui-x的打包需要把纹理图的路径也打包进去,而不是单纯地把png图拖进TP。
具体操作:
①首先,你需要点击Add folder,把你要打包的目录的上一层选中,因为只有蓝色的目录才会有目录路径。

这时候我打开plist,你会发现里面包含纹理路径了。

②接下来,我们需要在程序里写加载纹理的代码。(C艹代码请自行脑补)
cc.SpriteFrameCache:getInstance():addSpriteFrames(“main.plist”)在TuiManager:parseScene之前把 setUseSpriteFrame 的开关打开。TuiManage:getInstance():setUseSpriteFrame(true)
这时候创建时用的纹理路径会根据你的plist里面的纹理路径一一对应,控件所用纹理全部来自这张打包plist。

2.如何资源重用
Tui-x里重复利用一个控件资源是十分简单的事。如果你细心看fla的时候你会发现,HelloTui里面的按钮就是重复利用的。
如果我在main.fla里有一个按钮btn_green,如果在同一个fla内使用,只要把它拖进panel后修改实例名不唯一就可以。(因为创建控件时用的资源是只看库路径)

如果在其他fla里也用到这个按钮也是允许的。比如我要在store.fla中添加main.fla的按钮,你只需要复制main.fla的btn_green到store.fla的根库,然后再把这按钮拖进panel里就可以使用了,因为你这时候导出的xml里面写的资源路径是main/btn_green,资源就对上了。重用资源的实例名如果不在同一个fla是允许同名的,如果是Cpp的项目还可以设置命名空间,即把这个场景的关键帧设置名字。

3.如何减轻纹理带来的内存压力
在2dx的纹理缓存里有两种清除纹理的方式,一种是普通纹理清除,一种是打包纹理清除。在cpp项目集成了cocosBase,场景继承TuiBase后调用setAutoRemoveUnusedTexture(true),它会在析构的时候调用SpriteFrameCache的removeUnusedTexture,这样就能帮我们在退出场景是删除没用的纹理,减轻压力。TuiBase还有个方法setAutoRemoveUnuseSpriteFrame,效果是自动给删除没用的SpriteFrame。
注:cocosBase 暂时没有lua版,就是说lua不能setAutoRemoveUnusedTexture,只能setAutoRemoveUnuseSpriteFrame,后面将会发布。

4.下载
CocosWidget 官方群261286285 Tui-x 官方群 347085657
Tui-x 2.x : https://github.com/LingJiJian/tui/tree/Tui-x Tui-x 3.x https://github.com/LingJiJian/Tui-x