[Quick-x lua]CCLabel类数字变化动作
之前写了个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类数字变化动作的更多相关文章
- [cocos2dx动作]CCLabel类数字变化动作
cococs2dx的CCLabel类的数字变化动作 介绍: 简单的数字变化动作(适用于CCLabel类对象, 包括CCLabelTTF, CCLabelAtlas, CCLabelBMFont等等) ...
- [cocos2dx 3.x]Label类数字变化动作
之前写了个2.14版本的动作变化,见 http://www.cnblogs.com/creeper/p/3531304.html 3.x版本变化了很多,但是核心思想还是没有变化,所以对应3.x版本的改 ...
- 【Cocos2d-X开发学习笔记】第18期:动作类之改变动作对象、函数回调动作以及过程动作的使用
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.改变动作执行对象 CCTargetedAct ...
- 让数字变化炫酷起来,数字滚动Text组件[Unity]
让数字滚动起来 上周我的策划又提了样需求,当玩家评分发生变动时,屏幕出现人物评分浮层UI,播放评分数字滚动动画.这类数字滚动需求非常常见,我就按一般思路,将startvalue与endvalue每隔一 ...
- lua学习:lua中“类”的实现
在之前的面试遇到考用lua实现类的题目.现在就补补这块知识点. 我们都知道Lua中的table是一个对象.拥有状态,拥有self,拥有独立于创建者和创建地的生命周期. 一个类就是一个创建对象的模具.L ...
- 2019-9-2-win10-uwp-随着数字变化颜色控件
title author date CreateTime categories win10 uwp 随着数字变化颜色控件 lindexi 2019-09-02 12:57:38 +0800 2018- ...
- quick cocos2dx lua 内存释放
前言 对于内存的优化,网上有很多例子和教程.总体来说,就那么几种解决方案,在最后我会简单提下,这里先说下在quick中,对于图片的处理. 1.查看内存调试信息 对于quick框架的了解,我们可以参考\ ...
- UICountingLabel实现数字变化的动画效果-b
在大多数金融类 app 上或者其他 app 需要数字展示的地方, 经常会有如下的动画效果: 动画效果 怎么做呢? 一.下载UICountingLabel 下载地址: https://github.co ...
- Lua面向对象----类、继承、多继承、单例的实现
(本文转载)学习之用,侵权立删! 原文地址 http://blog.csdn.net/y_23k_bug/article/details/19965877?utm_source=tuicool&a ...
随机推荐
- redirect_uri参数错误解决方法
坑,微信改来改去的,找死人了,以前在“开发者中心”中,现在改在”接口权限“中了.
- WCF编程系列(七)信道及信道工厂
WCF编程系列(七)信道及信道工厂 信道及信道栈 前面已经提及过,WCF中客户端与服务端的交互都是通过消息来进行的.消息从客户端传送到服务端会经过多个处理动作,在WCF编程模型中,这些动作是按层 ...
- UIMenuController/UIPasteboard(2) UITableView上实用剪贴板
在UITableView上实用剪贴板有两种方法: 一.在tableView的代理方法中直接有三个有关剪贴板的方法. //某行是否允许show菜单 -(BOOL)tableView:(UITableVi ...
- Mysql 流程控制
流程控制 分支结构 if分支结构 语法: if 条件then -- 语句体 else -- 缺省语句体 end if; 示例: 循环结构 whi ...
- Python 问题集
1.问题:打开Python的IDLE(集成开发环境/Integrated DeveLopment Environment) 然后在Python的shell中做如下动作时: >>>py ...
- SQL 不同的数据类型
SQL 不同的数据类型 1.SQL TEXT 2.SQL VARCHAR(SIZE) VARCHAR(X) Case: user name, email, country, subject, pass ...
- 代码版本管理/SVN/Git
代码版本管理 一.SVN 1.SVN diff(create patch) 遇到了一个问题: Index: 通信协议.doc ===================================== ...
- Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组
1069 关押罪犯 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description S 城现有两座监狱,一共 ...
- 点击按钮文字变成input框,点击保存变成文字
<!DOCTYPE html><html lang="en"> <head> <meta http-equiv="Content ...
- 【BZOJ】1053: [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Description: g(x)表示x的约数个数,反素数:对于任意的i (i < x),均有g(i) < g(x),则x为反素数:现在输入不 ...