TexturePacker中的offset

来源:互联网 发布:苹果手机录音软件 编辑:程序博客网 时间:2024/05/29 04:34

TexturePacker是一个很好的工具,可以把小图合并成大图,节省了很多内存占用,又可以方便的把图片的透明的边界去掉。

TexturePacker有个两个选项:Trim和Crop,两个都是把图片的透明边界去掉,不过有区别,Trim保留了原图的信息,即原图的大小,使得开发者在用的时候觉得像是在用原图一样(实际上在保存图片时已节省了很多内存),而Crop则只是保留的切去透明边界后的图片的大小。

那么,Trim怎么保留原图的大小呢,打开plist文件,我们看到有两个标签

<key>offset</key>
<key>sourceSize</key>

什么是offset呢,看下图即可明白:


上图为原图,A点为非透明区域的中心点,即Crop后的中点,O点为原图的中点,以O点为原点建立如图坐标系,A点的坐标就是offset的值了。

所以,有了offset和原图的大小sourceSize,Trim后尽管保存的是去掉透明边界的图,实际上保留了原图的信息

Crop后sourceSize是去掉透明边界后的图片的大小,offset应该为(0,0),可是在TexturePacker(Pro) 2.4.2版本中Crop后的offset和Trim后的offset是一样的。。。可能是它的bug吧我觉得,因为既然不保留原图大小,就没必要保存offset了,不然游戏中的图会有问题,所以Crop之后我又手动在代码里把CCSpriteFrame对象的offset设为CCPointZero,然后就跟预期的一样的,不知道高版本的会不会有所改变。