CCTexture2D 是贴图纹理, 是缓存到GPU中的图片数据。
CCSpriteFrame 是相对于动画来说的概念,代表动画中“帧”,CCSpriteFrame 是贴图纹理CCTexture2D中某块区域,或者这个贴图纹理。
CCTexture2D 和CCSpriteFrame 都是我们看不到的, 我们真正能看到的 应该是CCSprite。
CCSprite 是显示到场景中的精灵, 是被实际画出来的东西, 那CCSprite 和CCTexture2D ,CCSpriteFrame 又有什么关系呢?
下面我将给你们来介绍。
CCSprite 的创建方式有如下几种
1.CCSprite 可以通过 图片的路径来创建。
2,CCSprite 可以通过 CCSpriteFrame 来创建
3,0)">CCTexture2D 来创建
其实上面三种创建方式 ,最后的函数调用都是通过CCTexture2D ,来创建一个 CCSprite.
最后都会掉到如下函数
所以总的来说,CCSprite的创建 是通过 缓存在GPU中的 贴图纹理来实现的。
CCSpriteFrameCache 精灵帧缓存类,通过.pList 和 .png图片 来缓存了一些CCSpriteFrame的对象, 这个类解决碎图问题, 大大提高了效率, 通过一些工具
把一些碎图 (小图片)整合到一张大图片中,通过加载一次贴图纹理,就把所有的整合到大图中的图片 加载了进去,缓存到CCSpriteFrameCache 对象中,以后
就可以通过碎图的名字,从CCSpriteFrameCache 对象中 获取 精灵帧对象。 然后可以使用获取的精灵帧做其他处理。
CCTextureCache 贴图纹理缓存类, 这个类可以把一些图片加载到GPU之后, 缓存起来, 以后直接取就可以了。
接下来要说说的 ,我感觉比较重要的两个类 CCSpriteBatchNode 和 CCTextureAtlas,这两个类只所以重要,是因为它们大大提高了渲染效率。
举例来说,如果你想创建1000个一样精灵图片,你有可能创建1000个CCSprite, 这样也是可以的。
但是引擎在渲染的时候要渲染1000次(调用1000次CCSprite draw方法)。
如果使用 CCSpriteBatchNode 只需渲染一次(调用1次CCSpriteBatchNode draw方法),重要绘画显示而是使用 CCTextureAtlas对象中drawNumberOfQuads方法。
drawNumberOfQuads方法会把所有要显示的精灵显示出来。
CCSpriteBatchNode 通常也是加载一张包括很多碎图的大图片, 然后获取这些碎图精灵 添加到CCSpriteBatchNode对象中。
3. CCAnimition 和 CCSpriteFrame 之间的关系
我的理解是CCAnimation 是个动画,不过是个静态容器, 这里面存储一些静态的 CCSpriteFrame 和一些帧间 隔时间之类的信息。 而是不能播放的, 如果要播放必须通
过CCAnimate类来实现, 这个才是播放动画的类。
如上是我的一些学习总结,有什么不对的 ,欢迎指正, 共同学习进步。
总结以上是内存溢出为你收集整理的Cocos2dx CCSprite CCSpriteFrame CCTexture2D CCAnimation学习总结全部内容,希望文章能够帮你解决Cocos2dx CCSprite CCSpriteFrame CCTexture2D CCAnimation学习总结所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)