看了好几天cocos2dx的帧动画,现在才有点眉目,为了高效期间我们一般会用到 精灵帧缓存(CCSpriteFrameCache) 和动画缓存(CCAnimationCache) .大体的操作步骤:

1.把多个帧动画合成一张,然后生成plist文件,plist文件记载着每一帧在大图中的位置信息.

2.通过plist文件把每一帧加载到精灵帧缓存.

CCSpriteFrameCache *frameCache=CCSpriteFrameCache::sharedSpriteFrameCache();
frameCache->addSpriteFramesWithFile("grossini.plist");

3.生成动画.

  生成动画有两种方式:第一种是通过动画帧plist文件,另一种使用精灵帧缓存生成帧数组创建动画.

1)通过动画帧plist文件

//CCAnimationCache::purgeSharedAnimationCache();
CCAnimationCache *animationCache =CCAnimationCache::sharedAnimationCache();
animationCache->addAnimationsWithFile("Animation.plist");
CCAnimation* animation = animationCache->animationByName("Animation");

2)通过精灵帧数组创建动画.

CCArray *animations = CCArray::createWithCapacity();
char str[]={};
for(int i = ; i< ; i++)
{
  sprintf(str,"grossini_dance_%02d.png",i);
  CCSpriteFrame *frame = frameCache->spriteFrameByName(str);
  animations->addObject(frame);
}
CCAnimation* animation = CCAnimation::createWithSpriteFrames(animations,2.0f); //有多个动画时也可以使用CCAnimationCache
 CCAnimationCache::sharedAnimationCache()->addAnimation(animation,"dance"); 
//从缓存中读动画.                                                                                                                                                                   
CCAnimation* danceAnimation = CCAnimationCache::sharedAnimationCache()->animationByName("dance");

4.精灵执行动画

CCAnimate* animate = CCAnimate::create(danceAnimation);
CCSprite* grossini = CCSprite::create();
CCSpriteFrame* frame = frameCache->spriteFrameByName("grossini_dance_01.png");
grossini->setDisplayFrame(frame);
grossini->setPosition(ccp(origin.x+visibleSize.width/,origin.y+visibleSize.height/));
addChild(grossini,);
grossini->runAction(animate);

cocos2dx 帧动画的两种创建方式的更多相关文章

  1. android位移动画的两种实现方式

    在android开发,我们会常常使用到位移动画,普通情况下位移动画有两种实现方式.一种是直接通过java代码去实现,第二种是通过配置文件实现动画,以下是两种动画的基本是用法: 纯Java代码实现: / ...

  2. android旋转动画的两种实现方式

    在android开发,我们会常常使用到旋转动画,普通情况下旋转动画有两种实现方式,一种是直接通过java代码去实现,第二种是通过配置文件实现动画.以下是两种动画的基本是用法: 纯Java代码实现: / ...

  3. 【转载】 Java中String类型的两种创建方式

    本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...

  4. String变量的两种创建方式

    在java中,有两种创建String类型变量的方式: String str01="abc";//第一种方式 String str02=new String("abc&qu ...

  5. Android中Fragment的两种创建方式

    fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...

  6. java多线程总结一:线程的两种创建方式及优劣比较

    1.通过实现Runnable接口线程创建 (1).定义一个类实现Runnable接口,重写接口中的run()方法.在run()方法中加入具体的任务代码或处理逻辑. (2).创建Runnable接口实现 ...

  7. python 多进程的两种创建方式

    Python中使用线程有两种方式:函数或者用类来包装线程对象. 第一种---------函数 菜鸟教程的我没看懂,说说我自己懂的----看视频理解的 import time import thread ...

  8. java多线程总结:线程的两种创建方式及优劣比较

    1.通过实现Runnable接口线程创建 (1).定义一个类实现Runnable接口,重写接口中的run()方法.在run()方法中加入具体的任务代码或处理逻辑. (2).创建Runnable接口实现 ...

  9. java多线程总结一:线程的两种创建方式及比较

    1.线程的概念:线程(thread)是指一个任务从头至尾的执行流,线程提供一个运行任务的机制,对于java而言,一个程序中可以并发的执行多个线程,这些线程可以在多处理器系统上同时运行.当程序作为一个应 ...

随机推荐

  1. django with mysql (part-3)

    step01: write second view-function vim views.py step02: configure your ( urls.py ) vim urls.py step0 ...

  2. mysql高级排序&高级匹配查询示例

    在大多数应用场景下,我们使用mysql进行查询时只会用到'=', '>' , '<' , in, like 等常用的方法,看起来,大多数情况下,已经足以应付我们的小型应用了.不过,在一些特 ...

  3. PLSQL查询表是否被锁定(转)

    PLSQL查询表是否被锁定(转) http://blog.sina.com.cn/s/blog_70717ff00100qb85.html (2011-05-08 13:13:06) 转载▼ 标签: ...

  4. 正则表达式提取url中的参数,返回json字符串

    var urlstr = "www.baidu.com?a=1&b=xx&c"; var s = urlstr.split("?"); var ...

  5. C# 传入引用类型的参数 返回值是否发生变化

    前一段时间做项目是,一YY说如果一个方法的参数是引用类型,那么在这个方法里面所做的所有的修改再方法调用后应该有体现.事实是这样的吗? 先看code 和运行结果: 运行结果 方法SetPersonInf ...

  6. 一个4节点Hadoop集群的配置示例

    环境: 操作系统:CentOS 6.5 64bit Hadoop:Version 1.2.1 Servers:hadoopnamenode,hadoop2ndnamenode,hadoopdatano ...

  7. quartzScheduler_Worker-1] but has failed to stop it. This is very likely to create a memory leak解决

    01-Jul-2016 07:24:20.218 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 80 ...

  8. git .gitignore 文件 解决二进制文件冲突问题

    .gitignore  主要是添加 忽略文件 .最近团队开发经常出现 UserInterfaceState.xcuserstate 冲突,打开发现是二进制文件 ,没法解决冲突. 只好 rm -rf 之 ...

  9. 如何利用OCS缓存TomcatSession全局变量(转)

    转: 首先非常感谢阿里云给我们提供了一个如此省事的平台. 我们公司是一家物流公司,主要提供运输和仓储的服务.我们现在正在把我们的系统往阿里云迁移.当然,还在迁移过程中,所以还有很多是没办法现在说得太清 ...

  10. C#版Windows服务安装卸载小工具-附源码

    前言 在我们的工作中,经常遇到Windows服务的安装和卸载,在之前公司也普写过一个WinForm程序选择安装路径,这次再来个小巧灵活的控制台程序,不用再选择,只需放到需要安装服务的目录中运行就可以实 ...