[cocos2dx动作]CCLabel类数字变化动作
cococs2dx的CCLabel类的数字变化动作
介绍: 简单的数字变化动作(适用于CCLabel类对象, 包括CCLabelTTF, CCLabelAtlas, CCLabelBMFont等等)
//注意 demo中支持的是CCLabelTTF ,把dynamic_cast相应的代码改成如下即可支持多种CCLabel对象
CCLabelProtocol *pLabel = dynamic_cast<CCLabelProtocol*>(m_pTarget);
demo下载地址:http://pan.baidu.com/s/1c09r3jU 环境:cocos2dx 2.14, xcode 5.0.2
版权木有,欢迎转载与各种使用修改~
源代码:
//头文件 CCLabelChange.h
// CCLabelChange.h #ifndef __testLabelChange__CCLabelChange__
#define __testLabelChange__CCLabelChange__ #include "cocos2d.h"
USING_NS_CC; class CCLabelChange : public CCActionInterval
{
public:
CCLabelChange(); public:
/** creates the action */
static CCLabelChange* create(float duration, int fromNum, int toNum); /** initializes the action */
bool initWithDuration(float duration, int fromNum, int toNum); virtual CCObject* copyWithZone(CCZone* pZone);
virtual void startWithTarget(CCNode *pTarget);
virtual CCActionInterval* reverse(void);
virtual void update(float time); protected: int m_nFromNum;
int m_nToNum;
};
//cpp文件 CCLabelChange.cpp
#include "CCLabelChange.h" CCLabelChange::CCLabelChange():
m_nFromNum(),
m_nToNum()
{ } CCLabelChange* CCLabelChange::create(float duration, int fromNum, int toNum)
{
CCLabelChange *pRet = new CCLabelChange();
pRet->initWithDuration(duration, fromNum, toNum);
pRet->autorelease(); return pRet;
} bool CCLabelChange::initWithDuration(float duration, int fromNum, int toNum)
{
if (CCActionInterval::initWithDuration(duration))
{
m_nFromNum = fromNum;
m_nToNum = toNum;
return true;
} return false;
} CCObject* CCLabelChange::copyWithZone(CCZone *pZone)
{
CCZone* pNewZone = NULL;
CCLabelChange* pCopy = NULL;
if(pZone && pZone->m_pCopyObject)
{
//in case of being called at sub class
pCopy = (CCLabelChange*)(pZone->m_pCopyObject);
}
else
{
pCopy = new CCLabelChange();
pZone = pNewZone = new CCZone(pCopy);
} CCActionInterval::copyWithZone(pZone); pCopy->initWithDuration(m_fDuration, m_nFromNum, m_nToNum); CC_SAFE_DELETE(pNewZone);
return pCopy;
} void CCLabelChange::startWithTarget(CCNode *pTarget)
{
CCActionInterval::startWithTarget(pTarget); CCLabelProtocol *pLabel = dynamic_cast<CCLabelProtocol*>(m_pTarget);
if (pLabel)
{
CCString *numStr = CCString::createWithFormat("%i", m_nFromNum);
pLabel->setString(numStr->getCString());
} } CCActionInterval* CCLabelChange::reverse(void)
{
return CCLabelChange::create(m_fDuration, m_nToNum, m_nFromNum);
} void CCLabelChange::update(float t)
{ CCLabelProtocol *pLabel = dynamic_cast<CCLabelProtocol*>(m_pTarget);
if (pLabel)
{
int num = m_nFromNum + (m_nToNum - m_nFromNum) * t;
CCString *numStr = CCString::createWithFormat("%i", num);
pLabel->setString(numStr->getCString());
} }
//使用方法
CCLabelTTF *label = CCLabelTTF::create("", "Arial", );
float duration = 5.0f;
int fromNum = ; //开始数字
int toNum = ; //结束数字
CCLabelChange *pChange = CCLabelChange::create(duration, fromNum, toNum);
label->runAction(pChange);
[cocos2dx动作]CCLabel类数字变化动作的更多相关文章
- [Quick-x lua]CCLabel类数字变化动作
之前写了个C++版本的,现在改成lua的, 两者原理是一样,但是动作的执行方式有些微区别 (因为lua无法继承CCActionInterval类,单纯使用lua的话无法调用action的update方 ...
- [cocos2dx 3.x]Label类数字变化动作
之前写了个2.14版本的动作变化,见 http://www.cnblogs.com/creeper/p/3531304.html 3.x版本变化了很多,但是核心思想还是没有变化,所以对应3.x版本的改 ...
- 【Cocos2d-X开发学习笔记】第18期:动作类之改变动作对象、函数回调动作以及过程动作的使用
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.改变动作执行对象 CCTargetedAct ...
- 【Cocos2d-X开发学习笔记】第19期:动作管理类(CCActionManager)的使用
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.动作管理类 动作管理类CCActionMan ...
- cocos2d-X学习之主要类介绍:动作:CCAction
引用自:http://www.cnblogs.com/lhming/archive/2012/07/01/2572238.html 类继承图: 主要函数: virtual CCObject * co ...
- cocos2d-x 详解之 CCAction(动作)
关于动作部分,总的来说使用起来比较简单,创建一个动作,然后让可渲染节点如精灵去执行这个动作即可.cocos2dx提供了很多类型的动作,使用起来也很方便.本节重点介绍动作CCAction的子类之一时间动 ...
- Cocos2d-x手机游戏开发中-组合动作
动作往往不是单一,而是复杂的组合.我们可以按照一定的次序将上述基本动作组合起来,形成连贯的一套组合动作.组合动作包括以下几类:顺序.并列.有限次数重复.无限次数重复.反动作和动画.动画我们会在下一节介 ...
- Learning Cocos2d-x for WP8(8)——动作Action
原文:Learning Cocos2d-x for WP8(8)--动作Action 游戏很大程度上是由动作画面支撑起来的. 动作分为两大类:瞬间动作和延时动作. 瞬间动作基本等同于设置节点的属性,延 ...
- 动作基类 CCAction
CCAction动作基类关系 class CC_DLL CCAction : public CCObject { public: CCAction(void); virtual ~CCAction(v ...
随机推荐
- JLabel跟label
- angularjs ios title不能修改的bug的解决方法
在app.js加入下面这句代码 就可以解决. function ($rootScope, $state, $stateParams, $log, httpService, apiUrl, cookie ...
- iOS开发——JS网页交互——javaScript
JS中调用OC #import "ViewController.h" @interface ViewController () <UIWebViewDelegate> ...
- html-----014---统一资源定位器
HTML 统一资源定位器 URL 可以由单词组成,比如 “w3school.com.cn”,或者是因特网协议(IP)地址:192.168.1.253.大多数人在网上冲浪时,会键入网址的域名,因为名称比 ...
- Less 官方文档学习笔记
LESS 是css的一种扩展,它的编辑器是基于node.js 的less.js,将less文件编译成css文件(可压缩). 其中的概念: 变量:定义变量来代替某个值,只能编译一次,本质是“常量”.例如 ...
- 加载jar文件输出class和method
package file import java.util.jar.JarEntry import java.util.jar.JarFile import org.junit.Test; class ...
- Hash函数的安全性
我们为了保证消息的完整性,引进了散列函数,那么散列函数会对安全正造成什么影响呢?这是需要好好研究一番的问题. 三个概念: 1.如果y<>x,且h(x)=h(y),则称为碰撞. 2.对于给定 ...
- CentOS 5.4 制作 Python 2.6 RPM 包的方法
不知道什么原因,CentOS 5.4 了,默认的Python的版本还是2.4的. 但是Python在CentOS里面的又非常的重要,可是 2.4版本的Python有很多的模块没有,最新的Python ...
- $.ajax参数备注-转转转
jquery中的ajax方法参数总是记不住,这里记录一下. $,ajax()方法参数详解 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为St ...
- Android Activity 生命周期详解
学习android开发这么久对于activity的生命周期还没有仔细思考过,所以,我大致的把这些东西整理一下,希望通过这使自己理解的更透彻点吧! 首先看一下Activity生命周期图和它的的四个阶段 ...