跟着石头哥哥学cocos2d-x(四)--cocos2dx中的动画以及TexturePacker使用

2019独角兽企业重金招聘Python工程师标准>>> hot3.png


之前向Andreas Loew申请了一枚TexturePacker注册码,很快都下来了,作为回报我打算还是写一篇关于TexturePacker的使用博客吧,有兴趣的可以在这里申请密钥,http://www.codeandweb.com,前不久他也来信回访过问我使用感觉怎样,因为工作的原因,太忙了,这里我主要介绍下cocos2dx中的动画以及TexturePacker使用。

做动画之前,要准备素材,在demo中的你可以下载:http://pan.baidu.com/share/link?shareid=1419818902&uk=3088193979

打开TexturePacker,

这个相信大家都看得懂,这里选择cocos2d,然后添加文件夹,该工具会自动加载纹理图片,选择打包的纹理图片以及plist输出路径:


各项参数设定完毕,发布,你会在设置的输出路径得到打包好的图片以及一个plist文件;

接下来,介绍下动画的创作:

动画创作有很多中方式,这里我就采用plist方式来创建动画;注意几点 1.精灵帧缓冲;2.精灵帧;3.动画序列容器;ps:再次建议学2dx的话,有精力, 把源码翻来看看,因为我们很多是记不住的 但是原理一定要明白。

这里直接上创建动画步骤,demo代码片段:

1、加载plist到缓冲帧里面,这里通过数组来创建动画帧序列;

2.将精灵帧添加到数组中;

3.创建精灵;

4.创建动画序列帧(注意动画序列容易这里CCSequence用类型),最后回调runAction(CCAction *action);


#ifndef __ROLE__HH__
#define   __ROLE__HH__
#include "cocos2d.h"
USING_NS_CC;
class role:public CCLayer
{
public:role(void);~role(void);virtual bool init();  static cocos2d::CCScene* scene();CREATE_FUNC(role);
};
#endif




#include "role.h"role::role(void)
{
}role::~role(void)
{
}bool role::init()
{bool bRet = false;do {//-new-//CCSize mysize=CCDirector::sharedDirector()->getWinSize();//把role.plist加入缓存帧CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("role/role.plist");//创建帧数组--数组来保存帧动画CCArray * attackArray=CCArray::create();//attackArray->retain();CCArray * attackArray2=CCArray::create();//attackArray2->retain();CCArray * runArray=CCArray::create();//runArray->retain();CCArray * walkArray=CCArray::create();for (int index=1;index!=9;++index){//从缓存中获取精灵帧添加到数组中CCLOG(CCString::createWithFormat("%s%d.png","Img_Zhici",index)->getCString());attackArray->addObject(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(CCString::createWithFormat("%s%d.png","Img_Zhici",index)->getCString()));}//Img_Zhn1.pngfor (int i=1;i!=17;++i){//从缓存中获取精灵帧添加到数组中CCLOG(CCString::createWithFormat("%s%d.png","Img_Zhn",i)->getCString());attackArray2->addObject(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(CCString::createWithFormat("%s%d.png","Img_Zhn",i)->getCString()));}//run for (int i=1;i!=7;++i){CCLOG(CCString::createWithFormat("%s%d.png","Img_ZRun",i)->getCString());runArray->addObject(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(CCString::createWithFormat("%s%d.png","Img_ZRun",i)->getCString()));}//walkfor (int i=1;i!=7;++i){CCString::createWithFormat("%s%d.png","Img_Zwlak",i)->getCString();walkArray->addObject(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(CCString::createWithFormat("%s%d.png","Img_Zwlak",i)->getCString()));}//创建攻击类型1 精灵CCSprite * sp=CCSprite::createWithSpriteFrame((CCSpriteFrame*)attackArray->objectAtIndex(0));sp->setPosition(ccp(mysize.width/4,mysize.height/3));this->addChild(sp);//创建攻击类型2精灵CCSprite * standAttack=CCSprite::createWithSpriteFrame((CCSpriteFrame*)attackArray2->objectAtIndex(0));	CCSize visibleSize= CCDirector::sharedDirector()->getVisibleSize();standAttack->setPosition(ccp(visibleSize.width/3,visibleSize.height/3));this->addChild(standAttack);//通过数组中的第一个精灵帧 创建奔跑精灵  CCSprite *runsprite=CCSprite::createWithSpriteFrame((CCSpriteFrame*)runArray->objectAtIndex(0));runsprite->setPosition(ccp(visibleSize.width/2,visibleSize.height/3));this->addChild(runsprite);CCSprite *walkSprite=CCSprite::createWithSpriteFrame((CCSpriteFrame*)walkArray->objectAtIndex(0));walkSprite->setPosition(ccp(visibleSize.width/1.5,visibleSize.height/3));this->addChild(walkSprite);//创建动画CCAnimation *animation1=CCAnimation::createWithSpriteFrames(attackArray,0.1f);CCAnimate *attack1=CCAnimate::create(animation1);CCAnimation * standAnimation=CCAnimation::createWithSpriteFrames(attackArray2,0.1f);CCAnimate *standAnimate=CCAnimate::create(standAnimation);CCAnimation * runAnimation=CCAnimation::createWithSpriteFrames(runArray,0.1f);CCAnimate *runAnimate=CCAnimate::create(runAnimation);CCAnimation * walkAnimation=CCAnimation::createWithSpriteFrames(walkArray,0.15f);CCAnimate *walkAnimate=CCAnimate::create(walkAnimation);//CCSequence动作序列容器 CCSpawnCCSequence* pse1=CCSequence::create(attack1,NULL);CCSequence* pse2=CCSequence::create(standAnimate,NULL);CCSequence* pse3=CCSequence::create(runAnimate,NULL);CCSequence* pse4=CCSequence::create(walkAnimate,NULL);//执行动作 forerversp->runAction(CCRepeatForever::create(pse1));standAttack->runAction(CCRepeatForever::create(pse2));runsprite->runAction(CCRepeatForever::create(pse3));walkSprite->runAction(CCRepeatForever::create(pse4));CCSpriteFrameCache::sharedSpriteFrameCache()->removeSpriteFramesFromFile("role/role.plist");bRet=true;} while (0);return bRet;
}cocos2d::CCScene* role::scene()
{CCScene * scene = NULL;do {scene = CCScene::create();CC_BREAK_IF(! scene);role *layer = role::create();CC_BREAK_IF(! layer);scene->addChild(layer);} while (0);return scene;
}



运行效果如下:


源码在这里以及打包好的资源:http://pan.baidu.com/share/link?shareid=1535353761&uk=3088193979

ps:关于TexturePacker作者,很厉害 也是很热情的 ,key在你申请之后会很快发放下来呵呵,感谢他提供这样优秀的工具!











转载于:https://my.oschina.net/chenleijava/blog/185420

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

头像和Karma汽车

Powered by Zoundry RavenTechnorati : Karma, 头像, 汽车 Del.icio.us : Karma, 头像, 汽车 转载于:https://www.cnblogs.com/bsmagic/archive/2008/08/06/1261858.html

All-In-One Code Framework [一站式示例代码库] 【转】

All-In-One Code Framework [一站式示例代码库]2010 对一站式示例代码库,对奋战在一站式示例代码库上的每一位工程师来说都是不同寻常的一年。 在我们共同努力和开发社区的支持下,该项目从一年前的草根雏形,成长为CodePlex排名前三&#xff0…

Ioc容器Autofac介绍

Autofac是轻量级的开源Ioc容器,在这里可以下载http://code.google.com/p/autofac/。如果你用过其他的Ioc容器,那么学习Autofac使用也会比较容易,下面将通过一些例子来讲解其用法。 先看一个例子: 首先新建一个工程,添加…

用代码实现Sharepoint2010的个人信息的照片上传(2)(原创)

用代码从AD读取照片信息并同步到SharePoint2010的个人照片信息中 前言 上篇我们讲到用代码实现了照片信息同步到SharePoint2010的个人照片信息中,但是做的是从文件夹读取照片信息到SharePoint2010,今天我们要做的从AD的thumbnailPhoto属性中读取照片信息到SharePoin…

HTML5实现Word中文字全环绕图片效果

实现这个功能是当时看见数字报的展示出来的编排方式,就是图片热点,而且下载打开还是PDF的,让我这个WP用户咋个看。想实现Word中的编排方式,也需要浏览器支持Word插件,火狐、谷歌、Opera这些都要另外弄插件,…

Bzoj 2127 happiness 最小割

happiness 题解: 将图转换成最小割. 将割完的图中与S相连的点看做选文科, 与T相连的点看做选理科. flow(s, u) 文科值 flow(u,t) 理科值 假设u 和 v 一起选文科有奖励值z, flow(s,u) z/2 flow(s,v) z/2, flow(u,v) z/2 假设u 和 v 一起选理科有奖励值z, flow(u,t) z/2…

POJ 1149 最大流建图 PIGS

题意: 给出猪圈个数 m 和买家人数 n 然后给出m个猪圈的猪的头数.. 接下来 n 行.. 给出mm a1 a2 .. a(mm) k 例如 2 1 5 3 表示第i1个用户 有mm(2) 个猪圈的钥匙 就是有第 a1(1) 个和第 a2(5) 个猪圈的钥匙..还想要买得k头猪.. 问最多能够卖出多少头.. 思路&#xff…

ARM通识——ARM的7种基本工作模式、37个通用寄存器

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、ARM采用32位架构 ARM约定一个Byte是8 bits,一个Halfword是16 bits (2 byte),一个Word是32 bits (4 byte)。 大部分ARM core 提供ARM 指令集(32 bit&#xff0…

以NFS方式挂载rootfs的设置方法

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 更多详细内容,见Linux中NFS服务器的配置(/etc/export)_天糊土的博客-CSDN博客 网络文件系统(NFS,network file system),是一种网络通讯协…

分析根文件系统中的/linuxrc文件(附带busybox的介绍)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考博客 init进程的详解_天糊土的博客-CSDN博客_init进程 busybox详解_linuxarmsummary的博客-CSDN博客 前言 因为uboot给内核传参的bootargs中有“init/linuxrc”这个项目,而由前面的…

CentOS Linux搭建SVN Server配置详解

PS:今天给开发的同事搭建一个公网的SVN Server,google一下,发现下面这篇最详细,就记录下来,重新排版一下。顺便根据自己的使用经验,补充了几个细节和总结。本文配置是基于CentOS 5.x的,但一样适…

405 Method Not Allowed

当jquery easyui的datagrid插件使用.json文件为数据源,通过非http协议访问【就是直接拖进浏览器查看效果】,能正常加载.json文件并且生成datagrid数据源。但是通过http协议访问示例代码时,无法加载json文件生成datagrid的数据源。 这个是由于…

Eclipse之ANT使用

Ant是Java平台下非常棒的批处理命令执行程序,能非常方便地自动完成编译,测试,打包,部署等等一系列任务,大大提高开发效率。如果你现在还没有开始使用Ant,那就要赶快开始学习使用,使自己的开发水…

idea修改maven项目版本号

1 先安装插件 2 控制台执行命令 mvn build-helper:parse-version versions:set -DnewVersion1.1-SNAPSHOT versions:commit 1.1-SNAPSHOT 为你要修改的版本号 技术交流群: 816227112 有时候命令执行完看不到改变,需要刷新下。 转载于:https://www.cnblo…

几个国外开源CMS系统比较

CMS是Content Management System的缩写,意为"内容管理系统"。上一下度娘或者放一下Google,全球的CMS系统,不下千个,开源的不下百个,如果只是普通用户,很难有时间和精力去比较那么多的系统优劣。不…

javascript函数,值得参考!

2019独角兽企业重金招聘Python工程师标准>>> javascript函数一共可分为五类:   常规函数   数组函数   日期函数   数学函数   字符串函数   1.常规函数   javascript常规函数包括以下9个函数:   (1)alert函数:显…

时钟系统——S5PV210的时钟系统的理论及操作

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考内容 s5pv210——初始化时钟 - biaohc - 博客园 用户手册 一、SoC时钟系统 1、时钟的含义与作用 时钟是同步工作系统的同步节拍。 SoC内部有很多器件,比如CPU、串口、DRAM控制器、…

Oracle 协议适配器错误

1.首先确认你的 OracleDBConsoleORACLE,OracleOraDb11g_home1TNSListener,OracleServiceORACLE 这三个服务是否已经正常的开启。 2. 确认你的listener 的端口是否被占用, 在命令行执行:netstat -aon|findstr "1521" &am…

串口通信——串口通信的基础概念

以下内容源于朱友鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考博客 同步通信与异步通信区别_wind19的博客-CSDN博客 SPI、I2C、UART(即串口)三种串行总线详解_天糊土的博客-CSDN博客_串口总线 一、电子通信相关的概念 1、同步通信和…

MS CRM 2011 RC中的新特性(9)—全新的工作流 脚本设计模式

MS Dynamics CRM 2011中,在流程处理方面,除了以往版本中具有的工作流之外,又加入了新的内容——脚本Dialog。脚本Dialog,是同步的、需要用户输入内容的流程。当启动了脚本后,系统会弹出向导风格的对话框,用…