Spritesheet(精灵表单),可以把它看作是一张巨大的图片,里面放着许许多多的Sprite(图片)。与spritesheet对应的,还有一个plist文件,这个文件指定了每个独立的sprite在这张“大图”里面的位置和大小,当代码需要使用这个sprite的时候,就可以很方面地使用plist文件中的这些信息来获取sprite。
这种处理方式的主要目的在于提高处理效率?因为cocos2d对它进行了优化!如果使用spritesheet来获取sprite,那么当场景中有许多sprite的时候,如果这些sprite存放在同一个spritesheet,那么cocos2d就会仅使用一次OpenGL ES调用来渲染这些sprite。但是,如果是单个的sprite的话,那么就会有N次OpenGL ES调用。
其代码调用示例如下:
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"TestSprintSheet.plist"];
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"TestSprintSheet.png"];
[self addChild:spriteSheet];
CCSpriteBatchNode类在旧版本中为CCSpriteSheet
使用精灵表单和CCSpriteBatchNode需要注意如下两点:
1 使用CCSpriteBatchNode时,所使用的贴图必须是同一张图片,也不能指定精灵的深度。所有的精灵都必须在同一渲染层。
2 项目中的图片资源可能不局限于一张贴图上,所以可以把多张贴图合并成一张大的贴图(合并的工具很多,大家可以自己搜索)。所以利用合成后的大贴图创建一个CCSpriteBatchNode。然后创建CCSprite的时候,设置每个贴图的具体区域就可以了。
在子龙山人的博客http://www.cnblogs.com/andyque/archive/2011/04/11/2012770.html中对这精灵表单的使用方式有更详细的说明。