之前写了个C++版本的,现在改成lua的,

两者原理是一样,但是动作的执行方式有些微区别

(因为lua无法继承CCActionInterval类,单纯使用lua的话无法调用action的update方法)

下载地址:https://github.com/chenquanjun/Quick-x-CCLabelChange

c++版本的也放到这个号了

--演示

--使用方法

     do
local label = CCLabelTTF:create("", "Arial", )
label:setPosition(display.cx - , display.cy)
self:addChild(label)
local action = CCLabelChange:create(label, , , ) action:playAction()
end do
local label = CCLabelTTF:create("", "Arial", )
label:setPosition(display.cx + , display.cy)
label:setColor(ccc3(, , ))
self:addChild(label)
local action = CCLabelChange:create(label, , , ) action:playAction()
end do
local label = CCLabelTTF:create("", "Arial", )
label:setPosition(display.cx - , display.cy - )
label:setColor(ccc3(, , ))
self:addChild(label)
local action = CCLabelChange:create(label, , -, ) action:playAction()
end do
local label = CCLabelTTF:create("", "Arial", )
label:setPosition(display.cx + , display.cy - )
label:setColor(ccc3(, , ))
self:addChild(label)
local action = CCLabelChange:create(label, , , ) action:playAction()
end

--源代码

 CCLabelChange = class("CCLabelChange", function()
local node = display.newNode()
node:setNodeEventEnabled(true)
return node
end)
--index
CCLabelChange.__index = CCLabelChange
CCLabelChange._duration = -
CCLabelChange._fromNum = -
CCLabelChange._toNum = -
CCLabelChange._target = nil
CCLabelChange._isPause = false --初步使用思路
--创建对象时候自动将本对象addChild(因为基于schedule执行)
--动作执行完毕后从父类移除,并通过某种方式标记执行完毕(例如在使用对象加字段,nil表示完毕) --因为不是继承CCActionInterval,所以需要传入target对象
function CCLabelChange:create(target, duration, fromNum, toNum)
local ret = CCLabelChange.new()
ret:init(target, duration, fromNum, toNum)
return ret
end function CCLabelChange:init(target, duration, fromNum, toNum)
self._duration = duration
self._fromNum = fromNum
self._toNum = toNum
self._target = target target:addChild(self) --基于此执行
end --两种情况下执行此方法 1、动作执行完毕 2、同类动作,旧动作在执行中,新动作需要执行,此时把旧动作移除
function CCLabelChange:selfKill()
self._target._labelChange:unscheduleUpdate() --停止scheduler
self:removeFromParentAndCleanup(true) --从父类移除
self._target._labelChange = nil --把引用删除
self._target = nil
end function CCLabelChange:pauseAction()
self._isPause = true
end function CCLabelChange:resumeAction()
self._isPause = false
end function CCLabelChange:playAction()
local oldAction = self._target._labelChange if oldAction then
--旧动作存在
oldAction:selfKill()
end self._target._labelChange = self --引用变成自己 local curTime =
local duration = self._duration local function int(x)
return x>= and math.floor(x) or math.ceil(x)
end local function updateLabelNum(dt)
if self._isPause then
return
end curTime = curTime + dt --这个类似动作里面的update的time参数
local time = curTime / duration if self._target then
if time < then --执行时间内
local tempNum = int((self._toNum - self._fromNum) *time) --取整
local num = self._fromNum + tempNum self._target:setString(num)
else
self._target:setString(self._toNum)
self:selfKill()
end else
error("target not exist")
end end self:unscheduleUpdate()
self:scheduleUpdate(updateLabelNum)
end function CCLabelChange:onEnter()
-- print("enter")
end function CCLabelChange:onExit()
print("exit")
self:unscheduleUpdate()
end

CCLabelChange

[Quick-x lua]CCLabel类数字变化动作的更多相关文章

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

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

  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. 让数字变化炫酷起来,数字滚动Text组件[Unity]

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

  5. lua学习:lua中“类”的实现

    在之前的面试遇到考用lua实现类的题目.现在就补补这块知识点. 我们都知道Lua中的table是一个对象.拥有状态,拥有self,拥有独立于创建者和创建地的生命周期. 一个类就是一个创建对象的模具.L ...

  6. 2019-9-2-win10-uwp-随着数字变化颜色控件

    title author date CreateTime categories win10 uwp 随着数字变化颜色控件 lindexi 2019-09-02 12:57:38 +0800 2018- ...

  7. quick cocos2dx lua 内存释放

    前言 对于内存的优化,网上有很多例子和教程.总体来说,就那么几种解决方案,在最后我会简单提下,这里先说下在quick中,对于图片的处理. 1.查看内存调试信息 对于quick框架的了解,我们可以参考\ ...

  8. UICountingLabel实现数字变化的动画效果-b

    在大多数金融类 app 上或者其他 app 需要数字展示的地方, 经常会有如下的动画效果: 动画效果 怎么做呢? 一.下载UICountingLabel 下载地址: https://github.co ...

  9. Lua面向对象----类、继承、多继承、单例的实现

    (本文转载)学习之用,侵权立删! 原文地址   http://blog.csdn.net/y_23k_bug/article/details/19965877?utm_source=tuicool&a ...

随机推荐

  1. [转]Windows Shell 编程 第三章 【转自:http://blog.csdn.net/wangqiulin123456/article/details/7987901】

    第三章 操作文件 我依然清楚地记得,Windows95 的贝塔版出现的情形,它在朋友之间和学院中传播,好酷,全新的文件管理器,一种全图标,全彩色可客户化的界面,以及活泼的动画标识使得在文件拷贝和删除方 ...

  2. 虚拟光驱 DAEMON Tools Lite ——安装与入门

    DAEMON Tools Lite 是什么?它不仅仅是虚拟光驱.是的,你可以使用它制作.加载光盘映像,但是 DAEMON Tools 产品那么多,Lite版与其他版本究竟有什么不同呢?或者说,是什么让 ...

  3. java集合框架示例图

  4. C++实用数据结构:二叉索引树

    看下面这个问题(动态连续和查询): 有一个数组A(长度为n),要求进行两种操作: add(i,x):让Ai增大x: query(a,b):询问Aa+Aa+1+...+Ab的和: 若进行模拟,则每次qu ...

  5. fsockopen/curl/file_get_contents效率比较

    前面小节 PHP抓取网络数据的6种常见方法 谈到了 fsockopen,curl与file_get_contents 的使用方法,虽然它们都能达到同一个使用目的,但是它们之间又有什么区别呢? 先谈谈c ...

  6. CentOS7 查看ip

    查看内网:ip addr 查看公网:curl members.3322.org/dyndns/getip

  7. jquery 动态添加下拉框 需要增加 煊染 selectmenu("refresh");

    若通过js动态选择下拉框的值必须刷新下拉框,例如:var selArray = $("select#sel");selArray[0].selectedIndex = 1;selA ...

  8. 简单改造 starling 中的 AssetManager 让其更适合 批次加载纹理

    API文档参考:http://doc.starling-framework.org/core/starling/utils/AssetManager.html 项目想以不改动starling的情况下对 ...

  9. php的运行环境介绍

    php软件已下载在我的百度云:页面底部有地址,如有需要欢迎下载! 一:如何让php环境运行php代码? 直接使用php软件直接运行代码文件中的php代码 在B/S结构中让Apache使用php软件运行 ...

  10. PHPCMS如何实现后台访问限制?

    修改phpcms 后台管理路径,可以有效的防止因为程序漏洞,或者是服务器安全问题所带来的 phpcms系统管理权限被黑客获取 文件路径:/caches/config/system.php 修改:'ad ...