本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010
之前我们已经学习过一些方法让节点“动”起来,Cocos2D-X中还有一种动作,就是动画类CCAnimate。要实现
CCAnimate,还需要定义CCAnimation等类。在这一期中,我们主要使用两种方法来实现动画的效果。
一、手动添加帧序列实现动画
1、CCAnimate和CCAnimation类的使用方法。
<1> CCAnimate::create(CCAnimation * pAnimation)
作用:根据CCAnimation中的帧序列、帧间隔,不断切换精灵帧,形成动画效果。
参数:CCAnimation对象。
<2> CCAnimation::create()
作用:创建一个动画的帧序列信息,其中包括帧间隔和循环次数。
2、CCAnimation类的常用函数。
<1> setDelayPerUnit(float var)
作用:设置帧间隔的时间。
参数:帧间隔。
注意:如果此函数不设置,动画将无法动态播放!
<2> setRestoreOriginalFrame(bool var)
作用:当动画播放完后,帧序是否重设为默认第一帧。
参数:其值为true,表示动画播完后回到第一帧。
<3> setLoops(unsigned int var)
作用:设置循环次数。
参数:循环次数,其值为-1时,动画无线循环。
<4> setFrames(CCArray * var)
作用:设置动画帧数组。
参数:帧数组。
3、项目示例。
首先新建Cocos2D-X项目,取名为“MyAnimation01”,然后在HelloWorldScene.cpp文件的init函数中添加如下代码。
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
CCSprite* sp = CCSprite::create("crop1.png");
sp->setPosition(ccp(170,200));
addChild(sp);
CCAnimation* animation = CCAnimation::create();
animation->addSpriteFrameWithFileName("crop1.png");
animation->addSpriteFrameWithFileName("crop2.png");
animation->addSpriteFrameWithFileName("crop3.png");
animation->addSpriteFrameWithFileName("crop4.png");
animation->setDelayPerUnit(2.8f / 14.0f);//必须设置否则不会动态播放
animation->setRestoreOriginalFrame(true);//是否回到第一帧
animation->setLoops(-1);//重复次数 (-1:无限循环)
CCFiniteTimeAction * animate = CCAnimate::create(animation);
sp->runAction(animate);
bRet = true;
} while (0);
return bRet;
}
4、示例效果图。
二、使用plist配置文件实现动画
在Mac系统的Cocoa等编程框架中,属性列表文件是一种用来存储串行化后的对象的文件。属性列表文件的扩展
名为plist,因此通常被称为plist文件。plist文件通常用于存储用户设置,也可以用于存储捆绑的信息,该功能在旧式的
Mac系统中是由资源分支提供的。通过plist文件也可以定义动画。
1、首先来介绍两个函数。
<1> CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(const char * pszPlist)
作用:根据plist中的每个精灵图片名,创建对应的帧CCSpriteFrame放入帧缓存中。
参数:plist资源文件名。
<2> CCAnimation::createWithSpriteFrames(CCArray * frames,float delay)
作用:根据帧数组与帧间隔创建一个动画的帧序列信息。
参数1:帧数组。
参数2:帧间隔。
2、项目示例。
首先新建Cocos2D-X项目,取名为“MyAnimation02”,然后在HelloWorldScene.cpp文件的init函数中添加如下代码。
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("crop.plist");
//利用帧缓存创建精灵
CCSprite* sp = CCSprite::createWithSpriteFrameName("crop1.png");
sp->setPosition(ccp(170,200));
addChild(sp);
CCArray* animFrames = CCArray::createWithCapacity(4);
char str[100] = {0};
for(int i = 1; i < 5; i++)
{
sprintf(str, "crop%i.png", i);
CCSpriteFrame *frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(str);
animFrames->addObject(frame);
}
CCAnimation *animation = CCAnimation::createWithSpriteFrames(animFrames, 0.3f);
animation->setLoops(-1);
sp->runAction(CCAnimate::create(animation));
//CCSpriteFrameCache::sharedSpriteFrameCache()->removeSpriteFrameByName("crop.plist")
bRet = true;
} while (0);
return bRet;
}
3、示例效果图。
源码下载地址
分享到:
相关推荐
资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
Cocos2D-X开发学习笔记-按键事件使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10040985
Cocos2D-X开发学习笔记-动作类之基础动作的使用示例(下) 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9840757
资源名称:Cocos2D-X游戏开发技术精解内容简介:Cocos2D-X是一款支持多平台的 2D手机游戏引擎,支持iOS、Android、BlackBerry等众多平台。当前,很多移动平台流行的游戏,都是基于Cocos2D-X开发的。 《Cocos2D-X...
Cocos2D-X开发学习笔记-游戏数据存储项目实例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10857813
Cocos2D-X开发学习笔记-触屏事件使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10029143
Cocos2D-X开发学习笔记-音乐和音效的使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10228941
Cocos2d-x是移动跨平台开发最流行的游戏引擎,而本书是一本很全面的、比较‘接地气’的游戏开发教程。书中汇聚了热门手机游戏《捕鱼达人》开发的实战经验,作者从最基础的内容开始,逐步深入地介绍了Cocos2d-x的相关...
Cocos2D-X开发学习笔记-动画类的使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10023823
Cocos2D-X开发学习笔记-时间调度schedule函数的使用 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9749457
自己记录的Cocos2d-x学习笔记,希望能够帮助新手,快速入门,掌握cocos2d-x的开发
Cocos2D-X开发学习笔记-游戏数据存储项目实例(下) 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10946695
在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...
资源名称:大富翁手机游戏开发实战基于Cocos2d-x3.2引擎内容简介:李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发...
精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发
Cocos2D-X开发学习笔记-动作管理类的使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10007849
Cocos2D-X开发学习笔记-渲染框架之图形的绘制 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9748001
Cocos2D-X开发学习笔记-渲染框架之菜单类的使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9626051
Cocos2D-X开发学习笔记-贴图地图类的使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10179471
cocos2d-x-2.1.5