【Cocos2d-X开发学习笔记】第21期:动画类(CCAnimate)的使用
本系列学习教程使用的是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开发学习笔记】第21期:动画类(CCAnimate)的使用的更多相关文章
- Rest API 开发 学习笔记(转)
Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址
驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...
- android开发学习笔记000
使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...
- 高性能Cordova App开发学习笔记
高性能Cordova App开发学习笔记 文件结构 添加插件 构建准备 各个www的作用,prepare命令会将hello\www的内容会拷贝到platform下的wwww目录,知道该改哪里了吧?如果 ...
- 步步为营 SharePoint 开发学习笔记系列总结
转:http://www.cnblogs.com/springyangwc/archive/2011/08/03/2126763.html 概要 为时20多天的sharepoint开发学习笔记系列终于 ...
- Kinect开发学习笔记之(一)Kinect介绍和应用
Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...
- ASP.NET Core Web开发学习笔记-1介绍篇
ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...
随机推荐
- 《SPFA算法的优化及应用》——姜碧野(学习笔记)
一.核心性质:三角不等式.最短路满足d[v]<=d[u]+w(u,v) 二.SPFA两种实现: 常见的是基于bfs的,这是直接对bellman-ford用队列维护.根据最短路的长度最长为(n-1 ...
- UVA 350 Pseudo-Random Numbers 伪随机数(简单)
题意:给定Z, I, M, L,根据随机数产生式k=(Z*L+I)%M.但是L表示的是上一个产生的数,比如根据产生式产生了序列{2,5,4,3}那么5是由L=2算来的,4由L=5算来的..第1个所产 ...
- LeetCode Factorial Trailing Zeroes (阶乘后缀零)
题意:如标题 思路:其他文章已经写过,参考其他. class Solution { public: int trailingZeroes(int n) { <? n/: n/+trailingZ ...
- LeetCode Invert Binary Tree 反转二叉树
思路:递归解决,在返回root前保证该点的两个孩子已经互换了.注意可能给一个Null. C++ /** * Definition for a binary tree node. * struct Tr ...
- 省常中模拟 Test2 Day2
two 模拟 大意:给你一个 N 位二进制数,有四种操作:加1.减1.乘2.整除2.给定一个操作序列,求最终结果.N <= 5*10^6.数据保证不会在最高位上进行进位或退位操作. 初步解法:由 ...
- UVa 11729 Commando War 突击战
你有 n 个部下,每个部下需要完成一个任务.第 i 个部下需要你花 Bi 分钟交待任务,然后他会立刻独立地.无间断地执行 Ji 分钟后完成任务.你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最 ...
- Docker管理面板Crane开源了!
导读 数人云容器管理面板 Crane 开源啦!Crane 包含着数人云工程师对 Docker 最新技术的热爱和实践.希望借助开源社区的力量,让 Crane 完善自身,更好地成长起来,让更多的国内用户体 ...
- Android之APK文件签名——keytool和jarsigner
一.生成密钥库将位置定位在jdk的bin文件中,输入以下命名行:keytool -genkey -alias ChangeBackgroundWidget.keystore -keyalg RSA - ...
- hdu1896 bjfu1268 水题
很简单的模拟,我是用的优先队列.不多说,上代码(这是bjfuoj的,hdu的要稍改一下): /* * Author : ben */ #include <cstdio> #include ...
- CABasicAnimation
几个可以用来实现热门APP应用PATH中menu效果的几个方法 +(CABasicAnimation *)opacityForever_Animation:(float)time //永久闪烁的动画 ...