Spritesheet的plist文件格式解析

2015年03月22日 16:35 0 点赞 0 评论 更新于 2025-11-21 18:11

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

作者信息

menghao

menghao

共发布了 3994 篇文章