首页 > 代码库 > lua滚动文字效果
lua滚动文字效果
基本的思想都是创建一个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) / 3) end return mWideWordWidth[key]end-- 生成keyfunction generateKey(fontName, fontSize) return string.format("%s%d", fontName, fontSize)end-- 1 创建剪裁区self.m_pClipRect = cc.rect(0, 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(26), color = cc.c3b(255, 255, 255), 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 = 2 --一秒移动多少个文字的距离local nTime = math.floor(nDistance/wideWordWidth(FONT_NAME, ZySize.SCALE(26))/speed)-- 6 动作local tarfinsh = function() if self.msgContent ~= nil then self.msgContent:removeSelf() self.msgContent = nil endendlocal pAction = cc.MoveBy:create(nTime, cc.p(-self.m_pClipRect.width, 0))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(2)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滚动文字效果
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。