TexturePacker是目前相当流行的图片纹理处理工具,它可以将小图组成大图,并生成相应的plist文件,
//下面是TexturePacker的界面
你可以将多个图片放入,组成一个大图导出,由于我这里没有连续的帧图片就不为大家演示过程了,不过这个很简单,稍微尝试下就懂了,实在不懂上百度搜一下就好,
这里需要中重点说明的是,这个软件是需要付费的,如果使用免费模式或者使用破解版。则会产生这样一个问题,有一帧图片是红色的,不能使用,如下图
这个图片我随意找了两张图合成,一个大图,一个连续的小图,是下面这两张图片
大家可以看到,大图变成了红色,这个就是免费模式的结果,但是也不是完全没有办法,TexturePacker作者给了我们免费申请注册序列的机会,链接在下面,只要正常填写就可以申请。
http://www.codeandweb.com/request-free-license
----------------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------------------------------------------
最后再讲一下怎么使用生成的plist文件
在cocos2d中代码如下。
将生成的大图和plist文件放入对应工程下的resource\res\文件夹下面,然后工程中使用以下代码(这个不是唯一的使用方法,但个人觉得,下面的代码使用起来比较好用)
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("xxx.plist");//提前将图片信息放入缓存中,
auto sp=Sprite::create("xxx.png");//这个是启动动画的图片,一般是帧动画第一个图片
Vector<SpriteFrame*> frames;//创建一个SpriteFrame*的向量,便于下面储存,注意这里的向量是Cocos2d自带的向量类型,不是stl的,
for (int i = 0; i < 10;i++) {
String *framename = String::createWithFormat("%d.png",i);//将每帧的图片名字创建出来
SpriteFrame *frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(framename->getCString());//通过帧图片名字获取帧图片
frames.pushBack(frame);//将帧图片加入向量
}
Animation *an = Animation::createWithSpriteFrames(frames,1.0f/10.0f);//设置相应参数
sp->runAction(Animate::create(an));//精灵运行动画
//以上就是帧动画运行的过程。
----------------------------------------------------------------至于plist文件-----------------------------------------------------------------------------------------------------------------------
plist文件其实就是xml文件,他是一种比较短小的配置文件,储存了每帧图片在大图中的位置和大小信息,如下图。
红色底线就是每帧图片的名字,大小和位置信息等等。。。。大家如果想深入了解xml可以去学习下tinyxml的使用,,
就讲到这里,祝大家开发愉快