[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 ...
随机推荐
- cl: cannot open file 'kernel32.lib'
在测试 jni时, 使用 cl命令, 如 cl -I xx\jdk1.7.0_17\include -I xx\jdk1.7.0_17\include\win32 -LD HelloNative.c ...
- HTML——<meta http-equiv="content-type" content="text/html; charset=UTF-8">
没有添加这句话的编码方式的话,很容易就乱码了 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&g ...
- ###学习《C++ Primer》- 3
点击查看Evernote原文. #@author: gr #@date: 2014-10-04 #@email: forgerui@gmail.com Part 3: STL泛型算法(第10章) 一. ...
- 【html】【19】高级篇--大事件时间轴
下载: http://sc.chinaz.com/jiaoben/131112181390.htm 其它: http://sc.chinaz.com/tag_jiaoben/shijianzhou.h ...
- IO流02_文件过滤器
[简述] 在File类的list方法中可以接收一个FilenameFilter参数,通过该参数可以列出只满足要求的文件. FilenameFilter接口里包含了一个accept(File dir, ...
- (hdu)2444 The Accomodation of Students 判断二分图+最大匹配数
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2444 Problem Description There are a group of s ...
- [技术翻译] 构建现代化的Objective-C (下)
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3563880.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- one makefile file
#gcc test.cpp -L. -Wl,-Bdynamic -ltestlib -Wl,-Bstatic -ltestlib -Wl,-Bdynamic #make clean; make ini ...
- m2e插件的新下载地址
今天在按照<Maven实战>这本书给eclipse配置maven的m2eclipse插件的时候发现,书中写的老的下载地址http://m2eclipse.sonatype.org/site ...
- 安装IntelliJ IDEA热部署tomcat插件JreBel
最近试着使用IntelliJ IDEA这款IDE,网上说它是最好用的java开发工具~但奈何国内ecilpse市场占有率实在稳固,所以国内这个工具也就少数人在使用 当然使用起来跟ecilpse还是有很 ...