之前写了个2.14版本的动作变化,见 http://www.cnblogs.com/creeper/p/3531304.html

3.x版本变化了很多,但是核心思想还是没有变化,所以对应3.x版本的改了一下放上来

有空的话把tolua的转换方法也放上来吧:)

 #ifndef __MISC_NODE_CCNUMBER_CHANGE_H__
#define __MISC_NODE_CCNUMBER_CHANGE_H__ #include <vector> #include "2d/CCAction.h"
#include "2d/CCAnimation.h"
#include "2d/CCActionInterval.h"
#include "base/CCProtocols.h"
#include "base/CCVector.h" //NS_CC_BEGIN
USING_NS_CC;
class Node;
class SpriteFrame;
class EventCustom; class NumberChange : public ActionInterval
{
public: static NumberChange* create(float duration, int fromNum, int toNum); virtual NumberChange* clone() const override;
virtual NumberChange* reverse(void) const override;
virtual void startWithTarget(cocos2d::Node *target) override;
virtual void update(float time) override; CC_CONSTRUCTOR_ACCESS:
NumberChange();
virtual ~NumberChange(); /** initializes the action */
bool initWithDuration(float duration, int fromNum, int toNum); protected:
int _fromNum;
int _toNum; private:
CC_DISALLOW_COPY_AND_ASSIGN(NumberChange);
}; //NS_CC_END #endif //__MISC_NODE_CCNUMBER_CHANGE_H__
 #include "2d/CCActionInterval.h"

 #include <stdarg.h>

 #include "2d/CCSprite.h"
#include "2d/CCNode.h"
#include "2d/CCSpriteFrame.h"
#include "2d/CCActionInstant.h"
#include "base/CCDirector.h"
#include "base/CCEventCustom.h"
#include "base/CCEventDispatcher.h"
#include "platform/CCStdC.h"
#include "deprecated/CCString.h"
#include "NumberChange.h" USING_NS_CC;
//NS_CC_BEGIN
NumberChange::NumberChange(){
} NumberChange::~NumberChange(){
} NumberChange* NumberChange::create(float duration, int fromNum, int toNum)
{
NumberChange *ret = new (std::nothrow) NumberChange();
ret->initWithDuration(duration, fromNum, toNum);
ret->autorelease(); return ret;
} bool NumberChange::initWithDuration(float duration, int fromNum, int toNum)
{
if (ActionInterval::initWithDuration(duration))
{
_fromNum = fromNum;
_toNum = toNum;
return true;
} return false;
} NumberChange* NumberChange::clone() const
{
// no copy constructor
auto a = new (std::nothrow) NumberChange();
a->initWithDuration(_duration, _fromNum, _toNum);
a->autorelease();
return a;
} void NumberChange::startWithTarget(cocos2d::Node *target)
{
ActionInterval::startWithTarget(target);
LabelProtocol *pLabel = dynamic_cast<LabelProtocol*>(target);
if (pLabel)
{
std::string numStr = cocos2d::StringUtils::format("%i", _fromNum);
pLabel->setString(numStr.c_str());
}
} NumberChange* NumberChange::reverse() const
{
return NumberChange::create(_duration, _toNum, _fromNum);
} void NumberChange::update(float t)
{
LabelProtocol *pLabel = dynamic_cast<LabelProtocol*>(_target);
if (pLabel)
{
int tempNum = (_toNum - _fromNum) * t;
int num = _fromNum + tempNum;
std::string numStr = cocos2d::StringUtils::format("%i", num);
pLabel->setString(numStr.c_str());
}
} //NS_CC_END

[cocos2dx 3.x]Label类数字变化动作的更多相关文章

  1. [cocos2dx动作]CCLabel类数字变化动作

    cococs2dx的CCLabel类的数字变化动作 介绍: 简单的数字变化动作(适用于CCLabel类对象, 包括CCLabelTTF, CCLabelAtlas, CCLabelBMFont等等) ...

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

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

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

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

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

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

  5. Cocos2d-x 3.0标签类Label

    Cocos2d-x 3.0后推出了新的标签类Label,这种标签通过使用FreeType[1]来使它在不同的平台上有相同的视觉效果.由于使用更快的缓存代理,它的渲染也将更加快速.Label提供了描边和 ...

  6. Cocos2dx源码赏析(4)之Action动作

    Cocos2dx源码赏析(4)之Action动作 本篇,依然是通过阅读源码的方式来简单赏析下Cocos2dx中Action动画的执行过程.当然,这里也只是通过这种方式来总结下对Cocos2dx引擎的理 ...

  7. 关于SWT中的Label类和Text类

    Label类的继承关系图 Label是SWT中最简单的界面组件,给出他的一个实例如下: public class Label1 { public static void main(String[] a ...

  8. 让数字变化炫酷起来,数字滚动Text组件[Unity]

    让数字滚动起来 上周我的策划又提了样需求,当玩家评分发生变动时,屏幕出现人物评分浮层UI,播放评分数字滚动动画.这类数字滚动需求非常常见,我就按一般思路,将startvalue与endvalue每隔一 ...

  9. cocos2d-x实例学习之常用类及其概要作用

    CCLayer,CCScene CCLayer类对应cocos2d-x引擎里的布景.每个游戏场景中都可以有很多层,每一层负责各自的任务,例如专门负责显示背景.专门负责显示道具和专门负责显示人物角色等. ...

随机推荐

  1. 敌情篇 ——DDoS攻击原理

    敌情篇 ——DDoS攻击原理 DDoS攻击基础 DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是 ...

  2. PL/SQL Developer 使用中文条件查询时无数据的解决方法

    PL/SQL Developer 使用中文条件查询时无数据,这是由于字符集的不一致导致的. 执行以下sql命令:select userenv('language') from dual; 显示:SIM ...

  3. CSU-ACM2016暑期集训训练4-BFS(F - Oil Deposits)

    F - Oil Deposits Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u De ...

  4. ajax详解,以及异步JSOP的实现

    这里我使用的是jquery的ajax方法   包括三个方法 : get() , post(),   getJson() get() 和post()的格式我就使用一下格式,很方便: $.ajax({ u ...

  5. C#语法需要注意的地方

    笔试中遇到的一些C#语法方面的问题,由于平时很少用到,笔试的时候模棱两可,现在做一个笔记. using System; using System.Collections.Generic; using ...

  6. BootstrapDialog点击空白处禁止关闭

    在乐学一百的项目当中引用到了BootstrapDialog,其中后台发送短信时,为了防止管理员编辑了半天的短息,突然间因为点击某个空白区域导致丢失,所以在此禁用掉点击空白关闭弹出框. 主要属性为: c ...

  7. redis_笔记

    1.redis是什么 这个问题的结果影响了我们怎么用redis.如果你认为redis是一个key value store,那可能会用它来 代替mysql:如果认为它是一个可以持久化的cache,可能只 ...

  8. QtSQL学习笔记(4)- 使用SQL Model类

    除了QSqlQuery,Qt提供了3个高级类用于访问数据库.这些类是QSqlQueryModel.QSqlTableModel和QSqlRelationalTableModel. 这些类是由QAbst ...

  9. java se基础

    Super和this的详解 http://wenku.baidu.com/view/365d9100a6c30c2259019e44.html Java 采用三个显式 也就是说 必须明确指定 关键字来 ...

  10. HTML5的简介

    前言:作为IOS开发工程师,终会接触到网页前端开发,甚至可能会有 用HTML5开发IOS的app客户端的需求.比如现在上架的app就有比如理财类型的app有的就用HTML开发的,从理财类型的app需求 ...