(学习笔记3)TexturePackerGUI的使用和角色动画的创建
来源:互联网 发布:java字符串字典排序 编辑:程序博客网 时间:2024/06/13 23:41
TexturePackerGUI的使用和角色动画的创建
在用Cocos2d-x开发游戏时,需要把几张图片合成一张图来节省空间,比如一组动画图:
这是一组爆炸效果图,在加载的时候需要一张一张加载,这样就会产生很多的精灵对象,为了解决这个问题,我们可以使用TexturePackerGUI来完成图片的合成。
首先下载TexturePackerGUI(http://www.codeandweb.com/texturepacker/download):
安装好后主界面:
主要的名词解释:
Data Format:导出什么引擎数据,默认cocos2d,下拉列表中有很多,基本常用的引擎都支持了
Data File :导出文件位置(后缀名.plist)
Texture Format:纹理格式,默认png
Image format:图片像素格式,默认RGBA8888...根据对图片质量的需求导出不同的格式
Dithering:抖动,默认NearestNeighbour,(如果图像上面有许许多多的“条条”和颜色梯度变化)将其修改成FloydSteinberg+Alpha;
Scale: 让你可以保存一个比原始图片尺寸要大一点、或者小一点的spritesheet。比如,如果你想在spritesheet中加载“@2x"的图片(也即为Retina-display设备或者ipad创建的)。但是你同时也想为不支持高清显示的iphone和touch制作spritesheet,这时候只需要设置scale为 1.0,同时勾选autoSD就可以了。也就是说,只需要美工提供高清显示的图片,用这个软件可以自己为你生成高清和普清的图片。
Algorithm TexturePacker:里面目前唯一支持的算法就是MaxRects,即按精灵尺寸大小排列,但是这个算法效果非常好,因此你不用管它。
Border/shape padding: 即在spritesheet里面,设置精灵与精灵之间的间隔。如果你在你的游戏当中看到精灵的旁边有一些“杂图”的时候,你就可以增加这个精灵之间的间隔。
Extrude: 精灵边界的重复像素个数. 这个与间隔是相对应的--如果你在你的精灵的边边上看到一些透明的小点点,你就可以通过把这个值设设置大一点。
Trim: 通过移除精灵四周的透明区域使之更好地放在spritesheet中去。不要担心,这些透明的区域仅仅是为了使spritesheet里面的精灵紧凑一点。--当你从cocos2d里面去读取这些精灵的时候,这些透明区域仍然在寻里。(因为,有些情况下,你可能需要这些信息来确定精灵的位置)
Shape outlines: 把这个选项打开,那么就能看到精灵的边边。这在调试的时候非常有用。
AddSprite:添加图片Add Folder:根据文件夹添加图片
Publish:导出资源文件(.plist和png)
软件的使用:
这里Algorithm TexturePacker:里面目前唯一支持的算法就是MaxRects,即按精灵尺寸大小排列,但是这个算法效果非常好,因此你不用管它。
MaxRects方法能够最大限度的节约资源。我们在这里选择Basic,按照一般的顺序排序,因为爆炸动画有一定的顺序。
如果按照MaxRects排序,结果如下:
然后点击:Publish,就可以导出.plist文件和.png文件了。
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
this->setTouchEnabled(true);
CCSizeWinSize=CCDirector::sharedDirector()->getWinSize();
//将图片加载到精灵帧缓存池中
CCSpriteFrameCache* frameCache=CCSpriteFrameCache::sharedSpriteFrameCache();
frameCache->addSpriteFramesWithFile("boom.plist","boom.png");
//通过原有的图片的名字来创建精灵,而且不需要提供在照片中的位置。
CCSprite*boom1=CCSprite::createWithSpriteFrameName("image20.png");
boom1->setPosition(ccp(200,200));
this->addChild(boom1);
bRet = true;
}while (0);
return bRet;
}
这样就可以随便的在场景上显示资源图片了。
接下来我们来创建一组动画。
USING_NS_CC;
class HelloWorld : public cocos2d::CCLayer
{
public:
// Here's a difference. Method 'init' in cocos2d-x returns bool, insteadof returning 'id' in cocos2d-iphone
virtual bool init();
// there's no 'id' in cpp, so we recommand to return the exactly classpointer
static cocos2d::CCScene* scene();
// a selector callback
void menuCloseCallback(CCObject* pSender);
// implement the "static node()" method manually
CREATE_FUNC(HelloWorld);
private:
//用打包前图片创建动画
CCAnimate* createAnimation();
};
在init()函数中添加:
CCSprite*run=CCSprite::create("HelloWorld.png");
run->setPosition(ccp(300,200));
this->addChild(run);
run->runAction(createAnimation());//精灵直接执行动画
这样就可以看到爆炸效果了。
- (学习笔记3)TexturePackerGUI的使用和角色动画的创建
- TexturePackerGUI软件的使用
- cocos2d+TexturePackerGUI动画制作
- cocos2d+TexturePackerGUI动画制作
- 使用Qt动画框架设计角色的二维动画
- Unity3d 5.x角色动画的创建与加载.
- 我的python学习笔记.创建和使用类
- 角色的管理员创建和维护网站
- WPF/Silverlight学习笔记 - 创建动画的方法
- 游戏开发学习笔记(二)创建游戏角色场景的制作
- ORACLE 的用户与角色学习笔记
- 角色动画文件的开发
- 角色动画的一些疑问(-)
- 角色创建界面的创建
- Linux学习笔记3--linux下库文件的创建和使用及其他
- Objective-UIImageView的创建和使用(带动画效果)
- 创建角色随机名字(mysql抽取随机记录)和mysql游标的使用
- Android动画用到的基本的属性和学习笔记
- AlertDialog对话框
- LIRe 源代码分析 7:算法类[以颜色布局为例]
- 执行存储过程与单独执行存储过程中的SQL查询速度不一致
- log4j.properties文件日志级别(自用)
- 让程序员最头疼的事儿是什么?给变量起个有意义的名字
- (学习笔记3)TexturePackerGUI的使用和角色动画的创建
- 解决在ubuntu 12.10安装vmware-tools实现文件共享问题
- 关于phpMyAdmin出现"#2000 无法登录 MySQL 服务器"的问题
- 介绍国产数据挖掘人工智能软件
- hibernate的cascade的理解
- POJ_3299
- 堆排序
- 英语飙升的好方法
- Linux命令整理