【Cocos2dx 3.3 Lua】滚动字幕
1、原理
如下图
由底层和字幕以及遮盖层组成
水平滚动:
|
RollingFont=class("RollingFont",function()
return cc.Layer:create()
end) RollingFont.ctor=function(self)
local cache=cc.SpriteFrameCache:getInstance()
cache:addSpriteFrames("rollfont/ui_serverlist.plist")
self.size=cc.Director:getInstance():getWinSize() --注册定时事件
self:registerScriptHandler(function(tag)
local scheduler=nil
if tag=="enter" then
scheduler=self:onEnter()
elseif tag=="exit" then
self:onExit(scheduler)
end
end)
end RollingFont.createText=function(self,text)
local ttfConfig = {}
ttfConfig.fontFilePath="fonts/arial.ttf"
ttfConfig.fontSize=11.4 local label = cc.Label:createWithTTF(ttfConfig, text, cc.TEXT_ALIGNMENT_LEFT, self.size.width)
label:setTextColor( cc.c4b(, , , ) )
return label
end --垂直滚动字幕
RollingFont.verticalFont=function(self)
--添加垂直滚动字幕边框
local listbox=cc.Sprite:createWithSpriteFrameName("login_listbase.png")
listbox:setPosition(cc.p(self.size.width/,self.size.height/+))
listbox:setScale(1.2)
self:addChild(listbox)
local listboxSize=listbox:getBoundingBox()
local listboxX=listbox:getPositionX()
local listboxY=listbox:getPositionY()
self.verticalRect=cc.rect(listboxX-listboxSize.width/,listboxY-listboxSize.height/,listboxSize.width,listboxSize.height) --垂直滚动字幕
local text="1.Hi! Welcome to My Blog,This is a Sample about\nfont vertical move with Cocos2dx 3.x Lua\n"
local label=self:createText(text)
label:setPosition(self.verticalRect.x+self.verticalRect.width-,self.verticalRect.y)
label:setAnchorPoint(,)
self:addChild(label)
self.labelVertical=label --字幕遮罩
local fg=cc.Sprite:create("rollfont/fg.png")
fg:setPosition(cc.p(self.verticalRect.x+self.verticalRect.width/,self.verticalRect.y+self.verticalRect.height/));
self:addChild(fg);
end --水平滚动字幕
RollingFont.horizontalFont=function(self)
--添加水平滚动字幕边框
local listbox=cc.Sprite:createWithSpriteFrameName("login_textbase.png")
listbox:setPosition(cc.p(self.size.width/,self.size.height/-))
listbox:setScaleX(2.5)
self:addChild(listbox)
local listboxSize=listbox:getBoundingBox()
local listboxX=listbox:getPositionX()
local listboxY=listbox:getPositionY() --水平滚动字幕
local text="1.Hi! This is a Sample about font vertical move with Cocos2dx 3.x Lua"
local label=self:createText(text)
label:setPosition(self.size.width,self.verticalRect.y-)
label:setAnchorPoint(,)
self:addChild(label)
self.labelHorizontal=label
local labelSize=label:getBoundingBox()
self.horizontalSize=cc.rect(,,labelSize.width,labelSize.height)
end RollingFont.onEnter=function(self)
--垂直滚动最大和最小高度
local hlabelSize=self.labelVertical:getBoundingBox()
local hmaxHeight=self.verticalRect.y+self.verticalRect.height+hlabelSize.height
local hminHeight=self.verticalRect.y+ --水平滚动最大宽度和最小宽度
local vmaxWidth=self.size.width
local vminWidth=-self.horizontalSize.width local function schedule()
--垂直滚动
local y=self.labelVertical:getPositionY()
y=y+
if y >= hmaxHeight then
y=hminHeight
end
self.labelVertical:setPositionY(y) --水平滚动
local x=self.labelHorizontal:getPositionX()
x=x-
if x <= vminWidth then
x=vmaxWidth
end
self.labelHorizontal:setPositionX(x)
end local scheduler=cc.Director:getInstance():getScheduler()
scheduler:scheduleScriptFunc(schedule,0.02,false)
return scheduler
end RollingFont.onExit=function(self,scheduler)
if scheduler then
cc.Director:getInstance():getScheduler():unscheduleScriptEntry(scheduler)
end
end RollingFont.create=function(self)
local roll=RollingFont.new()
roll:verticalFont()
roll:horizontalFont()
return roll
end return RollingFont
3、执行效果
【Cocos2dx 3.3 Lua】滚动字幕的更多相关文章
- 【Cocos2dx 3.x Lua】TileMap使用
1.编辑TileMap地图资源 2.Cocos2dx 3.x Lua中使用TileMap Link: http://codepad.org/P0nFP1Dx local TileMap=clas ...
- HTML滚动字幕代码参数详解及Js间隔滚动代码
html文字滚动代码 <marquee style="WIDTH: 388px; HEIGHT: 200px" scrollamount="2" dire ...
- UILabel滚动字幕的实现
经常需要在应用中显示一段很长的文字,比如天气或者广告等,这时候使用滚动字幕的方式比较方便. 参考文献: [1] YouXianMing, 使用UILabel实现滚动字幕移动效果, 博客园 [2] ht ...
- js原生 + jQuery实现页面滚动字幕
js原生/jQuery实现页面滚动字幕效果 17:45:49 在新闻列表或者文章列表信息等页面中很容易要求实现字幕滚动的效果,以下为简单的实现页面中滚动字幕的效果 1.jQuery实现页面滚动字幕效果 ...
- C#-循环滚动字幕,timer,从左至右,从右至左,暂停---ShinePans
Lable的Left属性是能够更改的,可是 Right属性不能够更改,所以我们能够利用 这个特点做自加 自减运算 using System; using System.Collections.Gene ...
- Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)
Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中点击移动的样例,在这个样例你能够得到怎样创建单点触 ...
- Cocos2d-x 脚本语言Lua中的面向对象
Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类 ...
- Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)
Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中的XMLHttpRequestTes ...
- Cocos2d-x 3.2 Lua演示样本CocosDenshionTest(音频测试)
Cocos2d-x 3.2 Lua演示样本CocosDenshionTest(音频测试) 本篇博客介绍Cocos2d-x 3.2中Lua演示样例的音频測试.Cocos2d-x使用SimpleAudi ...
随机推荐
- 傲游浏览器---自定义 UserAgent 字符串
遨游浏览器:http://www.maxthon.cn/ 自定义 UserAgent : http://www.fynas.com/ua 手机UserAgent大全 设备 系统 浏览器 User-A ...
- sencha touch NavigationView 嵌套 TabPanel 的问题
在st2.1之中,在NavigationView视图之中在嵌套一个TabPanel会有以下问题 下面我们监控TabPanel的activate事件和activeitemchange事件 会发现当首页加 ...
- syslinux 和 grub
syslinux是一个功能强大的引导加载程序,而且兼容各种介质.它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘.它的安装很简单,一旦安装syslinux好之后,sysLinu ...
- linux alternatives命令详解
alternatives是Linux下的一个功能强大的命令.只能在root权限下执行.如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用 alternatives 来指定一个全局的设置. a ...
- vue过滤动画
一.使用<transition name="fade"></transition>标签 name="fade", 是创建个fade的类名 ...
- 3-1 vue-resource基础介绍
1.静态引用 <script src="https://cdn.bootcss.com/vue-resource/1.3.4/vue-resource.js">< ...
- IIS "rewrite.dll failed to load. The data is the error." 错误解决方法
在Windows 10 build 17133.73上部署一个较老版本的ASP.NET 2.0程序,访问时候出现: Service Unavailable HTTP Error 503. The se ...
- java使用AES256解密
网上关于java用AES加密解密的文章有很多,我这里只用到解密(加密是服务器那边做^_^),所以更简洁一些: public class AES256Utils { private static fin ...
- Android开发中Chronometer的用法
Chronometer集成自TextView,里面有个Handler负责定时更新ui. 其计时原理很简单:通过setBase(long t)方法设置好baseTime之后,当start()时,每隔一秒 ...
- VS2015:出现devenv.sln解决方案保存对话框
问题描述: 打开VS2015项目时,提示保存“devenv.sln” 解决方法: 找到文件:C:\Program Files (x86)\Common Files\microsoft shared\M ...