[cocos2dx 3.x]Label类数字变化动作
之前写了个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类数字变化动作的更多相关文章
- [cocos2dx动作]CCLabel类数字变化动作
cococs2dx的CCLabel类的数字变化动作 介绍: 简单的数字变化动作(适用于CCLabel类对象, 包括CCLabelTTF, CCLabelAtlas, CCLabelBMFont等等) ...
- [Quick-x lua]CCLabel类数字变化动作
之前写了个C++版本的,现在改成lua的, 两者原理是一样,但是动作的执行方式有些微区别 (因为lua无法继承CCActionInterval类,单纯使用lua的话无法调用action的update方 ...
- cocos2d-X学习之主要类介绍:动作:CCAction
引用自:http://www.cnblogs.com/lhming/archive/2012/07/01/2572238.html 类继承图: 主要函数: virtual CCObject * co ...
- 【Cocos2d-X开发学习笔记】第18期:动作类之改变动作对象、函数回调动作以及过程动作的使用
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.改变动作执行对象 CCTargetedAct ...
- Cocos2d-x 3.0标签类Label
Cocos2d-x 3.0后推出了新的标签类Label,这种标签通过使用FreeType[1]来使它在不同的平台上有相同的视觉效果.由于使用更快的缓存代理,它的渲染也将更加快速.Label提供了描边和 ...
- Cocos2dx源码赏析(4)之Action动作
Cocos2dx源码赏析(4)之Action动作 本篇,依然是通过阅读源码的方式来简单赏析下Cocos2dx中Action动画的执行过程.当然,这里也只是通过这种方式来总结下对Cocos2dx引擎的理 ...
- 关于SWT中的Label类和Text类
Label类的继承关系图 Label是SWT中最简单的界面组件,给出他的一个实例如下: public class Label1 { public static void main(String[] a ...
- 让数字变化炫酷起来,数字滚动Text组件[Unity]
让数字滚动起来 上周我的策划又提了样需求,当玩家评分发生变动时,屏幕出现人物评分浮层UI,播放评分数字滚动动画.这类数字滚动需求非常常见,我就按一般思路,将startvalue与endvalue每隔一 ...
- cocos2d-x实例学习之常用类及其概要作用
CCLayer,CCScene CCLayer类对应cocos2d-x引擎里的布景.每个游戏场景中都可以有很多层,每一层负责各自的任务,例如专门负责显示背景.专门负责显示道具和专门负责显示人物角色等. ...
随机推荐
- C#集合之Hashtable
Hashtable是一个键值对集合,其泛型版本是Dictionary<K, V>,下面说下常用的一些方法; 1.Add(),向Hashtable添加元素,需要注意的是因为它是键值对集合,所 ...
- linux process 相关命令
1.显示指定用户信息:ps -u root 2.显示所有进程信息,连同命令行:ps -ef 3. ps 与grep 常用组合用法,查找特定进程:ps -ef|grep ssh 4. 把所有进程显示出来 ...
- datatable转json
//将datatable转化为json public string DataTableToJSON(DataTable dt) { JavaScriptSerializer jss = new Jav ...
- someExperience
// 面试题1 var name = 'World'; (function () { if (typeof name==='undefined') { var name = 'jack'; conso ...
- [译]JavaScript insertAdjacentHTML
原文地址:http://davidwalsh.name/insertadjacenthtml-beforeend 该死的DOM慢的很.随着我们的网站动态交互和Ajax操作越来越多,我们需要寻找一种高性 ...
- JAVA时钟
效果图如下: //简单动态时钟程序,以图形和数字两种方式来显示当前时间 import javax.swing.*; import java.awt.event.*; import java.awt.* ...
- PHPEXCEL使用实例
最近在项目中要用到PHP生成EXCEL,上网找了一下,发现PHPEXCEL挺不错,用了一下,感觉还行,就是设置单元格格式的时候比较麻烦,总体来说功能还是比较强大的,还有生成PDF什么的,发一个实例吧 ...
- css3 回到顶部书写
回到顶部 JS 代码 backTop = function(){ if(!document.querySelector("#backTop")){return;} ...
- CRUD生成器DBuilder设计与实现
源码位于github:https://github.com/lvyahui8/dbuilder.git .文中图片如果太小看不清楚,请右键点击“在新标签页中打开”即可看到原图 有兴趣还可以加QQ群交流 ...
- Visual C++ 对话框增加菜单栏
1.添加菜单资源 在resourceview视图中右击选择insert,添加一个菜单资源IDR_MENU1,同时设定好响应的菜单项,例 如: 菜单1 ...