【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 ...
随机推荐
- LeetCode - 637. Average of Levels in Binary Tree
Given a non-empty binary tree, return the average value of the nodes on each level in the form of an ...
- C C++ 文件输入与输出
C语言: 一 打开关闭文件 1 fopen函数 用于打开文件 FILE *fopen(char *filename, *type); fopen("c:\\ccdos\\clib" ...
- jQuery事件处理(六)
1.通过一步步调试的的方法观察了一下存放到cache中的事件及其处理程序的数据格式: { events : { // 根据事件类型存放添加到该元素上的所有事件,下面以click为例 click : [ ...
- mongodb gridfs基本使用
Mongodb GridFS图片文件存储解决方案 之前解决方案是接收图片数据后,将图片直接存储到盘阵,然后通过Apache做服务器,将图片信息存储到数据库,并且存储一个Apache的访问路径. 目前需 ...
- Unity3D 记第一次面试
事情是发生在2014-03-05 周三下午 在群里面看到上海艺游急聘Unity3D开发工程师,就整理了下简历投了去!直到接到电话通知我去面试才知道 我之前是有投了简历!太忙了 以至于真的忘了,不过那个 ...
- centos7搭建docker私有仓库
1.环境: [root@docker02 anchors]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [root@do ...
- wpgcms---详情页面数据怎么渲染
wpgcms的详情页面的数据会被保存在 contentInfo 这么一个字段里面. 面包屑导航调用: <p>当前位置 {% for c in crumb|slice(1, crumb|le ...
- vue--子组件主动获取父组件的数据和方法
子组件主动获取父组件的数据和方法 简单示例: this.$parent.数组 this.$parent.方法 示例: <template> <div id="Header& ...
- vue--父组件主动获取子组件的方法
父组件主动获取子组件的方法和属性 第一步:调用自组件的时候,给自组建定义一个Header <v-header ref='headerInfo'></v-header> 第二步: ...
- PHP直接输出一张图片
示例代码: public function img(){ $img = "http://static.hc39.com/uploads/309/t11332950.jpg"; $i ...