之前写了个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. PowerDesigner使用教程 —— 概念数据模型 (转)

    一.概念数据模型概述    概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充.它从用户的观点出发对信息进行建模,主要用于 ...

  2. Windows下 Scala开发环境搭建

    1.配置jdk:可看这里 2.下载scala,并安装 3.配置scala环境变量,把scala的安装路径加入path内 ps:验证是否安装正确:cmd->输入scala,如果出现scala环境, ...

  3. 简化版的Flappy Bird开发过程(不使用第三方框架)

    目录 .1构造世界 .2在世界中添加元素 .3碰撞检测 .4添加动画特效 .5总结 .0 开始之前 之前曾经用Html5/JavaScript/CSS实现过2048,用Cocos2d-html5/Ch ...

  4. html5绘制折线图

    html5绘制折线图详细代码 <html> <canvas id="a_canvas" width="1000" height="7 ...

  5. 51nod贪心算法入门-----活动安排问题2

    题目大意就是给几个活动,问要几个教室能够弄完. 这个题目的想法就是把活动的开始——结束的时间看做是数轴上的一段线段,教室的个数就是在某点的时间厚度,求最大的时间厚度就是所需要的教室个数. #inclu ...

  6. 网络设备作用和工作ISO层

    物理层——中继器和集线器 二者都起数字信号放大和中转的作用. 中继器 Repeater 用来延长网络距离的互连设备.REPEATER可以增强线路上衰减的信号,它两端即可以连接相同的传输媒体,也可以连接 ...

  7. WPF的ScrollViewer鼠标的滚动

    在C# 中,两个ScrollViewer嵌套在一起或者ScrollViewer里面嵌套一个ListBox.Listview(控件本身有scrollviewer)的时候,我们本想要的效果是鼠标滚动整个S ...

  8. vim file save as

    the command of vim to save as the file :w new_file_name

  9. HIVE中内连接和左半连接不一致问题

    一.理论 HIVE中都是按等值连接来统计的,理论上两种写法统计结果应该是一致的: 二.实际情况 但实际使用中发现两种写法会返回的结果,总会有一些差距虽然差别不大,但让人很是困惑. 三.原因 当使用jo ...

  10. iOS实现地图半翻页效果--老代码备用参考

    // Curl the image up or down CATransition *animation = [CATransition animation]; [animation setDurat ...