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

-- 生成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)
时间: 2024-07-30 10:17:20

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

cocos2dx 实现跑马灯效果和文字效果

目标:实现下面2种文字效果 1. 2. 方法:   利用ClippingNode实现上图所示效果. 1效果:给ClippingNode添加裁剪裁剪内容,即红色文字,然后设置裁剪模板.然后让模板来回移动即可实现如图效果.直接贴代码: Label* txt = Label::create("this is a clippingNode Test...this is a clippingNode Test...","Arial",30); txt->setColor

HTML滚动文字代码 marquee标签

    <marquee style="WIDTH: 388px; HEIGHT: 200px" scrollamount="2" direction="up" ><div align="left" ><br /></div ><center ><font face="黑体" color="#008000" size=&q

html5实现滚动文字

<div class="custom-notice"> <i class="icon-notice"></i> <marquee class="noticeText ng-binding" direction="left" behavior="alternate" scrollamount="100" scrolldelay="1000

jQuery实现固定顶部 定位滚动导航效果代码

jQuery实现固定顶部 定位滚动导航效果代码,很常见的效果,非常实用:滚动滚动条时,导航固定顶部,并且滚动到对应的板块时,当前导航高亮显示:点击导航文字时平滑跳转到对应的板块. $(function(){          var subNav_active = $(".adv_active");         var subNav_scroll = function(target){             subNav_active.removeClass   ("a

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

pygame绘制文字 ? 今天来学习绘制文本内容,毕竟游戏中还是需要文字对玩家提示一些有用的信息. 字体常用的不是很多,在pygame中大多用于提示文字,或者记录分数等事件. 字体绘制基本分为以下几个步骤: 初始化字体模块 pygame.init() 创建一个字体对象 可以从文件或者系统内字体选取 pygame.font.SysFont('幼圆',50) 绘制文本对象. a.render("测试字体",True,(255,0,0),(0,0,0)) 屏幕绘制字体 screen.blit

009 滚动文字

滚动文字 滚动文字的内容 <marquee direction="up"></marquee> //方向 <marquee scrollamount="1px"></marquee> //移动像素 可以设置滚动的方式和显示的长度 以及移动像素快慢,鼠标在上方时的时间等等 下面是详细解释: 该标签不是HTML3.2的一部分,并且只支持MSIE3以后内核,所以如果你使用非IE内核浏览器(如:Netscape)可能无法看到下

SharePoint 2010/SharePoint 2013 Custom Action: 基于Site Collection 滚动文字的通知.

应用场景: 有时候我们的站点需要在每个页面实现滚动文字的通知,怎么在不修改Master Page的情况下实现这个功能?我们可以使用Javascript 和 Custom Action 来实现. 创建一个Custom Action.主要使用到 Location = 'ScriptLink' 属性, 该属性可以动态的加载JavaScript 文件链接和代码块到模板页.代码如下: <Elements xmlns="http://schemas.microsoft.com/sharepoint/&

实现textview竖排文字效果

文字效果 /** * @描述 * @作者 tll * @时间 2016/10/20 */public class VerticalTextView extends LinearLayout { private LinearLayout llLayout; private TextView textView; public VerticalTextView(Context context, AttributeSet attrs) { super(context, attrs); this.cont

利用递归 实现UIScrollView无限滚动的效果

项目需求 利用递归 实现UIScrollView无限滚动的效果. 上机试题, #import "ViewController.h" @interface ViewController (){ UIScrollView *mainScroll; BOOL isFinish; int x; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; x=0; isFinish = YES;