基本的思想都是创建一个clippingNode,将要截取的节点添加到clippingNode中,节点加上action即可。

下面是左右滚动的代码,如果是上下滚动,更简单了,只需修改Y坐标即可,都不用动态去计算时间。

-- 获取宽字符的宽度
function wideWordWidth(fontName, fontSize)
local key = generateKey(fontName, fontSize)
if mWideWordWidth[key] == nil then
local str ="ABCDEFGHIGKLMNopqrstuvwxyz1234567890"
mWideWordWidth[key] = cc.LabelTTF:create(str, fontName, fontSize):getContentSize().width / (string.len(str) / )
end
return mWideWordWidth[key]
end -- 生成key
function generateKey(fontName, fontSize)
return string.format("%s%d", fontName, fontSize)
end -- 1 创建剪裁区
self.m_pClipRect = cc.rect(, display.cy, display.width * 0.2, display.height * 0.2)
self.m_pClipNode = display.newClippingRegionNode(self.m_pClipRect):addTo(self) -- 2 创建文本区域
self.msgContent = cc.ui.UILabel.new({
text = "你好 我是滚动文本",
font = FONT_NAME,
size = ZySize.SCALE(),
color = cc.c3b(, , ),
dimensions = cc.size(w, h),
align = ui.TEXT_ALIGN_CENTER, -- 文字内部居中对齐
valign = ui.TEXT_VALIGN_CENTER -- 文字内部居中对齐
})
:align(display.CENTER_LEFT, self.m_pClipRect.width + self.m_pClipRect.x, self.m_pClipRect.y + display.height * 0.2 * 0.5)
:addTo(self.m_pClipNode) -- 3 滚动文字的长度
local textW = math.round( self.msgContent:getContentSize().width) -- 4 移动距离
local nDistance = math.round( self.m_pClipRect.width) + textW -- 5 移动所需时间
local speed = --一秒移动多少个文字的距离
local nTime = math.floor(nDistance/wideWordWidth(FONT_NAME, ZySize.SCALE())/speed) -- 6 动作
local tarfinsh = function()
if self.msgContent ~= nil then
self.msgContent:removeSelf()
self.msgContent = nil
end
end local pAction = cc.MoveBy:create(nTime, cc.p(-self.m_pClipRect.width, ))
local pCallback = cc.CallFunc:create(tarfinsh)
local rep = cc.Sequence:create(pAction, pCallback)
self.msgContent:runAction(rep)

上下滚动动作部分代码

local pActionShow = cc.MoveTo:create(0.5, cc.p(display.cx, self.m_pClipRect.y + self.m_pClipRect.height * 0.5))
local pActionStay = cc.DelayTime:create()
local pActionDisappear = cc.MoveTo:create(0.5, cc.p(display.cx, self.m_pClipRect.y + self.m_pClipRect.height + self.m_pClipRect.height * 0.5 ))
local pCallback = cc.CallFunc:create(tarfinsh)
local rep = cc.Sequence:create(pActionShow, pActionStay, pActionDisappear, pCallback)
self.msgContent:runAction(rep)

lua滚动文字效果的更多相关文章

  1. android - TextView单行显示...或者文字左右滚动(走马灯效果)

    条件 TextView单行显示,文字左右滚动(走马灯效果)实现条件: 实现单行设置固定宽度或者设置权重都行 代码 TextView滚动必须写下面几个属性 android:singleLine=&quo ...

  2. Taro -- 文字左右滚动公告效果

    文字左右滚动公告效果 设置公告的左移距离,不断减小,当左移距离大于公告长度(即公告已移出屏幕),重新循环. <View className='scroll-wrap'> <View ...

  3. html5实现滚动文字

    <div class="custom-notice"> <i class="icon-notice"></i> <ma ...

  4. HTML滚动文字代码 marquee标签

    看到一个HTML滚动文字代码 marquee标签的内容,非常全面,而且觉得有点意思,可以让大家为自己博客或者网站设置一个漂亮的滚动文字. 以下是原文: <marquee style=" ...

  5. HTML如何实现滚动文字

    HTML如何实现滚动文字 一.总结 一句话总结:marquee标签,也可以用js和css来实现 marquee标签 也可jss和css <marquee><span style=&q ...

  6. 网页HTML代码:滚动文字的制作

    本节笔者讲述HTML代码中比较特殊的标签,它能使网页中的文字滚动,并且可以控制其滚动的属性. 制作滚动文字 通过本章前面的学习,读者已经能够很好地控制各种段落文字的显示方式,不过无论怎么设置,文字都是 ...

  7. (五十三)c#Winform自定义控件-滚动文字

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  8. Vue.js大屏数字滚动翻转效果

    ================================ 大屏数字滚动翻转效果来源于最近工作中element后台管理页面一张大屏的UI图,该UI图上有一个模块需要有数字往上翻动的效果,以下是最 ...

  9. Python之pygame学习绘制文字制作滚动文字

    pygame绘制文字 ✕ 今天来学习绘制文本内容,毕竟游戏中还是需要文字对玩家提示一些有用的信息. 字体常用的不是很多,在pygame中大多用于提示文字,或者记录分数等事件. 字体绘制基本分为以下几个 ...

随机推荐

  1. lintcode-149-买卖股票的最佳时机

    149-买卖股票的最佳时机 假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格.如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润. 样例 给出一个数组样例 [3 ...

  2. <Effective C++>读书摘要--Templates and Generic Programming<一>

    1.The initial motivation for C++ templates was straightforward: to make it possible to create type-s ...

  3. 3ds Max学习日记(六)

      到了周六就不想再忙实验室的活了,于是玩了一下3ds max,第5和第6章每章都只有4个视频,于是就一起弄完了,什么网格建模,曲面建模啥的,nurbs啥的. 附上今日的劳动成果:   叉子(用长方体 ...

  4. linux+Nginx+Mysql+PHP环境下,安装mysqli模块

    奶奶的腿儿啊,太不易了.倒腾了小半天儿,写此随笔,待后查. 阿里云ecs中,安装phpcms,出现了一个问题:环境检测的时候,一直提示 Mysqli扩展没开启. 老夫哪儿特么会这么专业的啊...能咋办 ...

  5. 伟大的淘宝IP库的API接口竟然提示503挂掉了

    1 淘宝IP库惊现503错误 吃完晚饭,大概6点半了,天色已暗,太阳早就落山了.回到宿舍打开博客一看,傻眼了:博客每篇文章的评论者的地理信息全部处于“正在查询中……”的状态.这神马情况,不会是被淘宝封 ...

  6. 【python】 可迭代对象、迭代器、生成器

    可迭代对象 iterable 可直接作用于for循环的对象统称为可迭代对象. 有 list. dict.tuple.set.str等数据类型,还有 generator(包括生成器和带yield的gen ...

  7. 【bzoj5064】B-number 数位dp

    题目描述 B数的定义:能被13整除且本身包含字符串"13"的数. 例如:130和2613是B数,但是143和2639不是B数. 你的任务是计算1到n之间有多少个数是B数. 输入 输 ...

  8. CodeForces - 704C

    题目大意:给你一个逻辑表达式,然后让你计算表达式为真的取值情况数,表达式由一系列的 a 或者 a|b 亦或起来,每个变量最多出现两次(包括反变量) 嘴炮开始:每个变量最多出现两次,那么跟它相关联的变量 ...

  9. 协程-Greenlet

    协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈. 线程切换的时候会保存到CPU里面. 因此: 协程能保留上一次调用时的 ...

  10. JS详细图解作用域链与闭包

    JS详细图解作用域链与闭包 攻克闭包难题 初学JavaScript的时候,我在学习闭包上,走了很多弯路.而这次重新回过头来对基础知识进行梳理,要讲清楚闭包,也是一个非常大的挑战. 闭包有多重要?如果你 ...