cocos2dx-3.2 笔记 - Sprite
最近由于兴趣使用cocos2dx-3.2自己写了款小游戏,里面用到了一些常用的类,在这里作为笔记记录,作为后续复习使用,也希望能帮到后来的读者。
cocos2dx更新算是比较快的,并且新旧版本的变化较大,在我用3.2版本时,网上的资料大多都是过时的,在此记录。
CCSpriteFrameCache
先介绍下CCSpriteFrameCache,这个是用来将图片加载至内存,后续用的图片直接从CCSpriteFrameCache取即可,不需要重新在加载图片,这个是提高性能的一种方式,尤其对于图片较多的情况下,另外cocos2dx已经支持plist的方式处理一个由许多图片拼接出来的大图,这个仅需一次加载图片便可以了,某些情况下还可以节约内存一般提升游戏性能这个方式是首选,至于这种方式是怎样节约内存,网上有篇文章测试过,个人觉得很有道理,可惜那篇文章链接找不到了,自己有兴趣可以搜索下。
进入正题:
直接介绍plist的使用方式好了,生成plist的工具网上也有好多,我使用的是 TexturePacker。
直接贴代码:
CCSpriteFrameCache::getInstance()->addSpriteFramesWithFile(strFileName+".plist",strFileName+".png");
这样就将一张大图加载至内存了。
加载图片:
CCSpriteFrame *frame = CCSpriteFrameCache::getInstance()->spriteFrameByName(pngName);
其中pngName就是实际每个小图的名称,这个名称在用TexturePacker生成时就用了你用来拼接的小图名称。
例:你用aa.png,bb.png.cc.png三张小图拼成一个一张叫big.png的大图,那么以上代码strFileName就是"big",pngName就是"aa.png","bb.png","cc.png"其中之一。当然你将大图加载在内存的时候,其实直接用小图名称当作一张本地的图片也是可以直接使用的,这个在下面的Sprite中介绍。
Sprite
Sprite作为显示用的最基本的类之一,一般用来显示游戏主角等单个物体,当然你完全可以继承Sprite自己重新写个Sprite,可以将动画等效果嵌入进去。
在Sprite上显示图片,有几种加载方式,直接上代码:
Sprite::createWithSpriteFrameName("aa.png");
这个就是使用上面CCSpriteFrameCache中已加载好的内存图片创建Sprite;
Sprite::spriteWithFile("big.png");
这个是直接使用图片加载。
Sprite s = Sprite::create(); s->initWithFile("big.png"); // s->initWithSpriteFrameName("aa.png");
当然使用先创建,然后在init也是可以的。实际上看下源码,他内部也是先创建然后init的。