• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua滚动文字效果

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

基本的思想都是创建一个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

-- 生成key
function 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
    end
end

local 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)

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua基础发布时间:2022-07-22
下一篇:
Lua中的字符串函数库发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap