码迷,mamicode.com
首页 > 其他好文 > 详细

关于Cocos2d-x中打包图集和使用方法

时间:2016-08-27 23:26:06      阅读:769      评论:0      收藏:0      [点我收藏+]

标签:

1.打开TextruePacker软件

2.把游戏中要使用的图片拖到TextruePacker里面,TextruePacker会自动帮我们排序,让所有小图变成一个大图

3.点击Publish-会输出两个文件

MyTexture.plist  //里面记录了所有小图在大图中的位置和属性,cocos可以根据这些信息在MyTexture.png大图中找到所需要的小图

MyTexture.png  //一张容纳了所有小图的大图

 

4.在GameScene.cpp的init方法里面写

//加载plist文件到一个精灵帧缓存中
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("MyTexture.plist");

 

 

开始使用

1.在对象类的init方法中使用,根据小图的名字在精灵帧缓存的大图中找到小图并且赋予Star对象纹理图案,这个和setTexture("star.png");是一样的效果,但是setTexture("star.png");每次都要去原文件里面找,而initWithSpriteFrameName("star.png");是直接从缓存中取,效率更高,速度更快。

1 bool Star::init(){
2 Sprite::init();
3 
4   //setTexture("star.png");
5 
6   //this->initWithSpriteFrameName("star.png");
7   initWithSpriteFrameName("star.png");
8 
9 }

 

2.在帧动画中使用,SpriteFrameCache::getInstance()是获得这个缓存精灵帧对象(类似一个大图)

 1 //创建行走的帧动画
 2 Animation * animation = Animation::create();
 3 //animation->addSpriteFrameWithFile("s_1.png");
 4 animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("s_1.png"));
 5 //animation->addSpriteFrameWithFile("s_2.png");
 6 animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("s_2.png"));
 7 //animation->addSpriteFrameWithFile("s_3.png");
 8 animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("s_3.png"));
 9 //animation->addSpriteFrameWithFile("s_4.png");
10 animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("s_4.png"));
11 //animation->addSpriteFrameWithFile("s_5.png");
12 animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("s_5.png"));
13 //animation->addSpriteFrameWithFile("s_6.png");
14 animation->addSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("s_6.png"));
15 animation->setDelayPerUnit(0.1f);
16 animation->setRestoreOriginalFrame(true);
17 //设置动画型的动作
18 auto animate = Animate::create(animation);
19 //this->runAction(RepeatForever::create(animate));
20 myHero->runAction(RepeatForever::create(animate));

 

 

3.创建精灵节点的时候使用

1     //创建一颗子弹
2     auto bullet = Sprite::createWithSpriteFrameName("bullet1.png");

 

 

4.播放动画时使用,setSpriteFrame();感觉和setTextrue();差不多

 1 //播放受伤动画
 2         SpriteFrame *hurt = nullptr;
 3         SpriteFrame *old = nullptr;
 4         switch (m_planeType)
 5         {
 6         case Enemy2:
 7             hurt = SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy2_hit.png");
 8             old = SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy2.png");
 9             break;
10         case Enemy3:
11             hurt = SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy3_hit.png");
12             old = SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy3_n1.png");
13             break;
14         case Enemy4:
15             hurt = SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy3_hit.png");
16             old = SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy3_n2.png");
17             break;
18         }
19 
20         auto setHurtImg = CallFunc::create([this, hurt](){
21             this->setSpriteFrame(hurt);
22         });
23 
24         auto setOldImg = CallFunc::create([this, old](){
25             this->setSpriteFrame(old);
26         });
27 
28         auto hurtAction = Sequence::create(setHurtImg, DelayTime::create(0.2), setOldImg, nullptr);
29 
30         this->stopAllActions();
31         this->runAction(hurtAction);

 

 

5.放进精灵帧数组中

1 Vector<SpriteFrame*> m_blowframes; //存放爆炸纹理精灵帧,.h文件里面定义
1 if (planetype == EnemyPlaneType::Enemy1) 
2     {
3         m_blowframes.pushBack(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy1_down1.png"));
4         m_blowframes.pushBack(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy1_down2.png"));
5         m_blowframes.pushBack(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy1_down3.png"));
6         m_blowframes.pushBack(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy1_down4.png"));
7     }

 

关于Cocos2d-x中打包图集和使用方法

标签:

原文地址:http://www.cnblogs.com/HangZhe/p/5814012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!