Spritesheet的plist文件格式解析
1. Spritesheet的plist文件中字段的含义
在游戏开发中,当把一些小图合并成一张大图时,会生成一个配置文件,即plist文件。若要从大图中获取小图,就需要依据plist文件中的信息。例如,game.png 是小图合成后的大图,而 game.plist 则是对应的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 的计算:
假设 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格式?
2.1 图像纹理定义文件
例如上述提到的plist文件,它将多个纹理拼在一张大图上。在Cocos2d-x中,可以使用 CCSpriteFrameCache 来载入这类plist文件。
2.2 Label纹理定义文件
其作用与图像纹理定义文件类似,不过它处理的是文本相关的纹理,主要面向 CCLabelAtlas。