瘸腿蛤蟆笔记08-cocos2d-x-3.2工具使用 TexturePacker


转载标明出处:http://blog.csdn.net/notbaron/article/details/38326893

上篇回顾

         上篇中,蛤蟆学习了用Plist文件来创建动画,这样实现的代码量比正常的少了很多。但是我们当时使用的plist文件时复制于cocos2d-x源码中的。这次我们学习下怎么自己创建plist文件。

 

工具介绍

         首先介绍下这次学习的主角TexturePacker,这个工具是一个德国人写的需要买激活码。蛤蟆这里用的是试用版的。工具官网http://www.codeandweb.com/texturepacker/.大家可以在这里进行下载最新的版本。

 

具体步骤

那么现在让我们一起来使用一下它吧。

我们需要下载一个工具TexturePacker工具,链接如下:

http://www.codeandweb.com/texturepacker/  ,下载安装完毕后,打开如下图 1 。

        瘸腿蛤蟆笔记08-cocos2d-x-3.2工具使用 TexturePacker_第1张图片

         我们将\cocos2d-x-3.2\tests\cpp-tests\Resources\Images路径下的14张图片拖到TexturePacker工具里面如下图2 :

瘸腿蛤蟆笔记08-cocos2d-x-3.2工具使用 TexturePacker_第2张图片

         然后点击如下图 3 所示的红框部分,选择我们项目的Resources目录。然后点击Publish按钮,就会在Resource目录下创建一个Plist文件和一个 png文件。

         就这么简单。

 瘸腿蛤蟆笔记08-cocos2d-x-3.2工具使用 TexturePacker_第3张图片


代码实现

bool HelloWorld::init() 函数中加入如下代码即可。

 

         auto cache =SpriteFrameCache::getInstance();

         cache->addSpriteFramesWithFile("test.plist");

         auto grossini  =Sprite::createWithSpriteFrameName("grossini_dance_01.png");     

         constintkNumberOfFrames = 15;

         Vector<SpriteFrame*>frames;

         for (int i =1; i < kNumberOfFrames; i++)

         {

                   char szName[100] = {0};

       sprintf(szName, "grossini_dance_%02d.png", i);

                   frames.pushBack(cache->getSpriteFrameByName(szName));

         }

         // play the animation

         auto anim =Animation::createWithSpriteFrames(frames,0.1f);

         auto action =Animate::create(anim);

         grossini->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 +origin.y));

         grossini->runAction(action);

         this->addChild(grossini);

 

 

 

 

代码解释

 

         auto cache =SpriteFrameCache::getInstance();//创建一个缓存实例

         cache->addSpriteFramesWithFile("test.plist");//加载test.plist文件,这个文件就是我们使用TexturePacker创建的,同时还有一个文件叫走tets.png。此时在resource目录中,我们只需要test.plist,test.png这两个文件即可。

         auto grossini  =Sprite::createWithSpriteFrameName("grossini_dance_01.png");     

//这个表示创建一个精灵(图片的名字可以直接使用之前的图片名字,即使现在resource中没有该文件也没关系,因为该图片能在test.png中找到)

         constintkNumberOfFrames = 15; //这个表示定义一个常量,正式代码不要出现哦

         Vector<SpriteFrame*>frames;//创建一个顺序容器

         for (int i =1; i < kNumberOfFrames; i++)//这个忽略,不明白的小伙伴可以回帖,或看之前的笔记

         {

                   char szName[100] = {0};//这个忽略,不明白的小伙伴可以回帖,或看之前的笔记

       sprintf(szName, "grossini_dance_%02d.png", i); //这个忽略,不明白的小伙伴可以回帖,或看之前的笔记

                   frames.pushBack(cache->getSpriteFrameByName(szName));

//这个表示往容器里面放精灵图片

         }

         // play the animation

         auto anim =Animation::createWithSpriteFrames(frames,0.1f);//创建一个动画

         auto action =Animate::create(anim);//创建一个动画播放器

         grossini->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 +origin.y));

//这个忽略,不明白的小伙伴可以回帖,或看之前的笔记

         grossini->runAction(action); //这个忽略,不明白的小伙伴可以回帖,或看之前的笔记

         this->addChild(grossini); //这个忽略,不明白的小伙伴可以回帖,或看之前的笔记

 

 

 

总结

         通过本笔记,我们学会了最基础的TexturePacker使用,以及和cocos2d-x代码的结合。

         这个最大好处是能节省很多的内存,应该原先很多的图片现在变成了一个。这里为什么不能像上篇一样直接使用plist中的动作呢?这是因为目前我们只做的plist文件中只是精灵帧的集合,蛤蟆也不清楚TexturePacfker是否支持打包帧动画。

晚上的时候到TexturePacker官网溜了一圈感觉很不错,蛤蟆决定有空好好去看一下,只是时间是个问题。不过,既然定了目标那就努力去看吧。

你可能感兴趣的:(瘸腿蛤蟆笔记08-cocos2d-x-3.2工具使用 TexturePacker)