Tui-x 资源管理( 转 ) ----- 4

注:本文的内容是已HelloTuiCpp为例子讲解。

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


1.如何用SpriteFrame来创建控件

首先我们需要在flash的img控件里勾选spriteFrame,然后去准备打包纹理,这样Tui-x就可以自动使用SpriteFrame去创建组件。


Tui-x创建控件时候有两种模式,一种是普通纹理图,一种是打包纹理。使用打包纹理图你需要自己先用TexturePacker对散图进行打包,注意,Tui-x的打包需要把纹理图的路径也打包进去,而不是单纯地把png图拖进TP。

具体操作:

首先,你需要点击Add folder,把你要打包的目录的上一层选中,因为只有蓝色的目录才 会有目录路径。我一般的做法是新建一个文件夹,然后把游戏模块的资源目录(如resource的main目录)复制过来,然后直接Add folder这个新建的文件夹就可以了。导出完main目录之后,只要直接删掉这个文件夹里的main目录,换上下一个资源目录即可,因为TP是即时刷新 的。



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


注:

I.这里有些地方要注意的。如果你的资源目录里面包含CSlider或CProgressBar的话,TP不能设置纹理旋转,Tirm模式要none。这 是因为ccw的进度条垂直和水平所加载的资源是不一样的,如果你打包出来的plist中设置了旋转,那么创建的时候就有可能裁切错位。而Tirm模式要 none,是因为plist切割纹理的时候,如果素材本身确实是需要有一些透明的地方占位的话,TP一裁掉,那么创建的时候就有可能错位了。

II.骨骼动画,粒子还有帧动画,这3种含有自带plist的资源,可以不跟着一起打包成大纹理(实际上也没必要)。


②接下来,我们需要在程序里写加载纹理的代码。

  1. <span style="font-size:14px;">SpriteFrameCache::getInstance():addSpriteFrameWithFile("main.plist");</span>  

这时候创建时用的纹理路径会根据你的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的项目还可以设置命名空间,即把这个场景的关键帧设置名字。


有些时候我们的图片都是相同的,只不过是水平翻转(镜像)了一下,就变成两张png,其实这是没必要的浪费。只要在flash里对这个img属性设置flipX或flipY就可以达到翻转图片的目的。你甚至还可以在翻转后继续旋转一些角度。


3.如何减轻纹理带来的内存压力

在2dx的纹理缓存里有两种清除纹理的方式,一种是普通纹理清除,一种是打包纹理清 除。在cpp和lua项目演示使用了cocosBase,场景继承TuiBase后调用 setAutoRemoveUnusedTexture(true),它会在析构的时候调用SpriteFrameCache的 removeUnusedTexture,这样就能帮我们在退出场景是删除没用的纹理,减轻压力。TuiBase还有个方法 setAutoRemoveUnuseSpriteFrame,效果是自动给删除没用的SpriteFrame。

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

原文地址:https://www.cnblogs.com/dudu580231/p/4992541.html