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类数字变化动作的更多相关文章

  1. [Quick-x lua]CCLabel类数字变化动作

    之前写了个C++版本的,现在改成lua的, 两者原理是一样,但是动作的执行方式有些微区别 (因为lua无法继承CCActionInterval类,单纯使用lua的话无法调用action的update方 ...

  2. [cocos2dx 3.x]Label类数字变化动作

    之前写了个2.14版本的动作变化,见 http://www.cnblogs.com/creeper/p/3531304.html 3.x版本变化了很多,但是核心思想还是没有变化,所以对应3.x版本的改 ...

  3. 【Cocos2d-X开发学习笔记】第18期:动作类之改变动作对象、函数回调动作以及过程动作的使用

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.改变动作执行对象 CCTargetedAct ...

  4. 【Cocos2d-X开发学习笔记】第19期:动作管理类(CCActionManager)的使用

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.动作管理类 动作管理类CCActionMan ...

  5. cocos2d-X学习之主要类介绍:动作:CCAction

    引用自:http://www.cnblogs.com/lhming/archive/2012/07/01/2572238.html 类继承图: 主要函数: virtual CCObject *  co ...

  6. cocos2d-x 详解之 CCAction(动作)

    关于动作部分,总的来说使用起来比较简单,创建一个动作,然后让可渲染节点如精灵去执行这个动作即可.cocos2dx提供了很多类型的动作,使用起来也很方便.本节重点介绍动作CCAction的子类之一时间动 ...

  7. Cocos2d-x手机游戏开发中-组合动作

    动作往往不是单一,而是复杂的组合.我们可以按照一定的次序将上述基本动作组合起来,形成连贯的一套组合动作.组合动作包括以下几类:顺序.并列.有限次数重复.无限次数重复.反动作和动画.动画我们会在下一节介 ...

  8. Learning Cocos2d-x for WP8(8)——动作Action

    原文:Learning Cocos2d-x for WP8(8)--动作Action 游戏很大程度上是由动作画面支撑起来的. 动作分为两大类:瞬间动作和延时动作. 瞬间动作基本等同于设置节点的属性,延 ...

  9. 动作基类 CCAction

    CCAction动作基类关系 class CC_DLL CCAction : public CCObject { public: CCAction(void); virtual ~CCAction(v ...

随机推荐

  1. 移动端Web页面问题

    1.安卓浏览器看背景图片,有些设备会模糊.   用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率 ...

  2. bootstrap.css.map这个文件有何用处?该怎能使用它?

    . ├── bootstrap.css ├── bootstrap.css.map ├── bootstrap.min.css ├── bootstrap-theme.css ├── bootstra ...

  3. MVC小系列(二十)【给Action提供HttpStatusCodeResult】

    主要用到: HttpStatusCodeResult 和HttpStatusCode 的http返回状态 比如: /// <summary> /// 使用异步模式 /// </sum ...

  4. 解压版tomcat设置为系统服务

    1.先关闭tomcat,在"开始 "→"运行 "中输入cmd 命令,进入MS-DOS界面 2.进入 到tomcat的bin目录下 (解压版tomcat存放目录, ...

  5. 使用CLK.AspNet.Identity提供以角色为基础的访问控制(RBAC)

    使用CLK.AspNet.Identity提供以角色为基础的访问控制(RBAC) 程序代码下载 程序代码下载:点此下载 前言 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.N ...

  6. Codevs 2449 骑士精神 2005年省队选拔赛四川

    2449 骑士精神 2005年省队选拔赛四川 时间限制: 1 s 空间限制: 128000 KB 题目等级 : **大师 Master** 题目描述 Description 在一个5×5的棋盘上有12 ...

  7. 'DEVENV' is not recognized as an internal or external command,

    使用命令行 DEVENV 编译c# 工程, C:\MyProject>DEVENV "MyProject.sln" /build Release /useenv'DEVENV ...

  8. 安装会声会影x8后打不开的解决方法

    操作系统:Windows 7 症状:双击程序图标后一直停留在购买介绍页,主程序界面一直无法打开 解决方法:删除系统补丁KB3126587和KB3126593

  9. js微博发布框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. What is Windows Clustering

    A cluster is a group of independent computer systems, referred to as nodes, working together as a un ...