Spritesheet的plist文件格式解析

1. Spritesheet的plist文件中字段的含义

plist文件是游戏开发中将一些小图合并成一张大图的时候生成的配置文件,从大图中获取小图需要对应plist文件中的信息,如上图中,game.png是小图合成后的大图,game.plist是对应的plist文件。

plist文件包括的信息如下图:

frames

bg_in_dailysign.png

frame

{{593,104},{320,458}}

offset

{0,0}

rotated

sourceColorRect

{{0,0},{320,458}}

sourceSize

{320,458}

plist中各字段的含义如下:

frame:小图在大图中的位置(相对于大图左上角)和尺寸,程序会根据这个来做剪辑。

rotated:如果值为true,图片顺时针旋转90度。

sourceSize:小图原本的大小,也是sprite的大小。

sourceColorRect:小图在sourceSize这个方形的位置和尺寸(以左上角来算),这一部分应该是去掉了原图中透明的部分后的那部分。

offset:在合成大图的过程中texturePackage会把原图透明的部分删除,offset是这张新的图片的中心点相对于原图的中心点(以sourceSize这个方形的中心点)的偏移,这个是以cocos2d的坐标系为准的,y轴向上为正,x轴向右为正。如上图中,offset=(1,-2) ; sourceColorRect={ (4,4) , (106,59) }; sourceSize = ( 112, 63);

sourceSize的中心点是(112/2,63/2)= (56,31.5)

sourceColorRect的中心点是 (4,4)+ (106/2 ,59/2) = (57, 33.5)。所以sourceColorRect的中心点相对于sourceSize的中心点是x方向是向右偏移1,为正,y方向是向下偏移2,为负。所以offset = (1, -2)。

2. Cocos2d-x在哪些地方使用了plist格式?

1)图像纹理定义文件,如1中的plist文件

将多个纹理拼在一张大图上,使用 CCSpriteFrameCache 可以载入这类plist文件;

2)Label纹理定义文件

作用与图像纹理定义文件类似,只不过处理的是自己,面向CCLabelAtlas;