CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache()
cache->addSpriteFramesWithFile(“plist名称“,”图片名称“)
plist和图片文件是拿茄清用纹理工具生成的,我用的工具是 TexturePacker。这样就把图片都加在到cache中了,当你取图片的时候用CCSprite::spriteWithSpriteFrameName("图片名称")就可以了,使用起来非常简单,如消前有问纳皮题再问。
希望对你有所帮助。
我们将使用这张图片来给我们的日历枣世图片添加一个凳租肢边框,是那种带有波纹效果的边框,而不是四边形的。这张图片透明的型大部分,就是遮罩效果的部分,而白色区域则是日历图片会显示的区域。精灵就是将图形资源加载到内存中,并根据游戏需要将其显示到屏幕中的工具, 继承自 CCNode , CCSprite 除了节点的功能外,还封装了一张图片,在游戏中一个 2D 图形就是一个精灵类的对象。还有一点我们需要注意,就是 cocos2d 是用 3d 的方式绘制 2d 图形的, 精灵绘制图像用的是 openGL ES (移动平台用的 3d 引擎, android 用的也是它),因此图片在内存中 实际上是以 Texture ( 贴图)的形式存在的 。
精灵相关类的关系图
CCSpriteBatchNode 作用是优化精灵,提高精灵的绘制效率,精灵数量越多,效果越明显。它的工作原理是:将所有该对象的子节点(只能是精灵)用 openGL 的渲染方法一次性绘制,这样可以省去多次 open-close 的时间,作为 CCSpriteBatchNode 对象子节点的精灵不能用自己的 Texture 绘制,而是用 CCSpriteBatchNode 对象姿搏的 Texture 统一绘制,精灵只是提供坐标、旋转角度等信息,这就是它只需要 open-close 一次的原因,但也正因为如此,导致批处理节点的所有子节点都必须和它用同一套 Texture ,即 CCSpriteBatchNode 对象绘制出的图形都是一样的,这点需要格外注意。 CCSpriteBatchNode 的用法和普通精灵没什么两样,都可以设置 Texture ,也都是用 Texture 来绘制,只要通过 addChild 方法成为其子节点的精灵,都会得到它的优化,但是 CCSpriteBatchNode 只能添加精灵为子节点。
可以把它看成一个纹理(即图片加载入内存后供 CPU 和 GPU *** 作的贴图对象。),它是 cocos2d-x 渲染图形的重要参数,用来贴图,因为 cocos2d-x 使用 opengl es 绘制 2d 图形的,它的尺寸是 2 的 n 次方。一般通过以下方式获得:
该类的本质是一个内存池,用来缓存游戏中用到的 CCTexture2D 对象御雹,是个单例。一旦纹理加载完成,下次使用时可使用它返回之前加载的纹理,从而减少对 GPU 和 CPU 内存的占用。
它内部有一个字典 CCMutableDictionary m_pTextures , key 为图片的名称,值是 CCTexture2D 。当调用它的 addImage 函数添加图片时,会先根据图片名称去内存中查找是否已存在,如果存在,则将对象返回,如果不存在,则会生成一个,将其存入池中并返回,这样同样的 Texture 在池中最多只会有一份,达到节约空间的目的。
这个类的最大作用就是作为 Texture 的载体,将图形数据传递给精灵,同时它还有 offset 、 rotated 等一系列参数,用来存储 Plist 的数据。( plist 是一种数据存储格式,有专门的 API 可以将其读取并保存到内存中,但这里说的是一种动画编辑器生成的、基于镇册帆 plist 格式保存的数据,就是说 cocos2d 支持这种动画编辑器,可以解析它的数据)使用 Frame 机制构建精灵,还可以支持精灵的动画效果,因为精灵除了做位移或旋转等 *** 作,还可能实时地改变自身显示的图形。 cocos2d 用 CCAnimation 保存一个 Frame 序列,然后用 CCAnimate 这个行为类根据序列定时切换精灵的当前帧。
SpriteFrameCache 管理帧的内存池,主要服务于多张碎图合并出来的纹理图片。这种纹理在一张大图中包含了多张小图,直接通过 TextureCache 引用会有诸多不便,因而衍生出来精灵框帧的处理方式,即把截取好的纹理信息保存在一个精灵框帧内,精灵通过切换不同的框帧来显示出不同的图案。
SpriteFrameCache 的常用接口和 TextureCache 类似,唯一需要注意的是添加精灵帧的配套文件一个 plist 文件和一张大的纹理图
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)