位置: 编程技术 - 正文

【深入了解cocos2d-x 3.x】一步一步通过ClippingNode实现一个功能完善的跑马灯公告(1)(cocos-creator)

编辑:rootadmin

推荐整理分享【深入了解cocos2d-x 3.x】一步一步通过ClippingNode实现一个功能完善的跑马灯公告(1)(cocos-creator),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos-creator,cocos 2,cocos 入门,cocos2dx4.0入门,cocos2dx4.0入门,cocos2d,cocos2dx4.0入门,cocos 2,内容如对您有帮助,希望把文章链接给更多的朋友!

这篇文章主要是通过一步一步实现一个功能完善的跑马灯公告来展示ClippingNode的用法并且最终深入ClippingNode的源码,了解其实现原理。

首先,先介绍一下ClippingNode,ClippingNode也叫裁剪节点,能将一些内容通过使用模板裁剪出来显示在界面上,可以实现一些很炫酷的效果。来看看今天要实现的效果

1、ClippingNode类分析

先来看看ClippingNode的声明文件 看看其中的public方法

首先是create,这个方法是用于创建一个ClippingNode,这个就不多做赘述了,第二个create是创建一个带遮罩模板的裁剪节点。

接下来的getStencil和setStencil分别是获取和设置一个遮罩模板,裁剪物体方法就是通过这个遮罩模板的,遮罩模板只要是基于Node的对象都可以(非常重要)。

接下来的hasContent返回其是否有需要绘制的内容,如果没有绘制的内容则返回false,有则返回true。

getAlphaThreshold和setAlphaThreshold分别是获取和设置一个像素的透明度&#;,取&#;范围从0-1,其中0表示都不绘制,1表示都绘制。0.5表示透明度在0.5以上的都绘制,这个函数涉及到opengl的Alpha测试的相关概念,Alpha测试的作用通过一句话解释就是:所有像素的透明度&#;低于某个阀&#;的统统抛弃,不绘制到屏幕上。

最后的isInverted和setInverted分别表示绘制的内容是模板内的还是模板外的,其效果如下:

2、简易跑马灯实现

【深入了解cocos2d-x 3.x】一步一步通过ClippingNode实现一个功能完善的跑马灯公告(1)(cocos-creator)

上节简单介绍了一下ClippingNode的函数,这节就通过实现一个简易的跑马灯功能来直观的了解。首先介绍一下制作跑马灯的思路。

首先我们需要将跑马灯中的一部分超出的字裁剪掉,不让他显示在界面上。这就需要用到ClippingNode,现在先来做第一步。实现的代码如下:

上述的每一句代码都有注释,就不再多解释了,这一步实现出来的效果如下图,但是跑马灯还不能动起来,待会我们就将跑马灯动起来。

现在我们就设计一个Action将跑马灯动起来,跑马灯一般需要先将文字左移,移动到文字看不见的时候再将文字移除或者隐藏,代码如下(为了简便,就直接设置隐藏了):

现在跑马灯的样子就如同开篇展示的那样了,可是这样还不能直接使用,因为这只是一串代码,还需要对其进行一定的封装,然后提供一个非常简便的方法给别的类调用。

3、封装

现在我们从便捷性的角度考虑如何将跑马灯功能封装成一个函数供其他类调用。首先提取出函数的参数,分别是:显示区域,跑马灯文字,字体字号,跑马灯位置,跑马灯的父节点。下面是初步封装好的一套跑马灯函数的声明:

看参数是不是有些略多,每次调用这个函数是不是非常的不方便,那么我们现在来看看究竟有那些参数是必须要传入的吧。每次调用跑马灯显示的文字都会改变,其他的参数在一个游戏中是不会改变的。那么就有必要做一个类来保证使用方法的便捷性了。

首先,我们简单的构建一下一个跑马灯类,如下

然后是最重要的init方法和show方法的实现这样就可以通过以下的调用方法来调用跑马灯了

4、完善

看上去,此前的步骤我们已经完成了一个跑马灯的功能,实际上这个类距离真正能使用还差那么一点点,因为传入跑马灯的消息的传入时机是不确定的,可能这一条消息还没有播放完成下一条就要开始播放了。这样就需要实现一个播放等待队列,将需要播放的消息加入播放队列,然后跑马灯自动判断是否需要显示。下面是改进后的类声明文件以及实现文件。

.h:

.cpp:

此处将show方法隐藏,并且提供了addMessage方法,内部实现了一个有限状态机,根据状态来显示剩余的消息,其使用方法与此前相&#;:

cocos2d基础介绍 cocos2d中,大量使用了单例(singleton)模式,单例其实就是一个普通的类,但是它在整个应用程序生命周期内只实例化一次,cocos2d中,要访问单例对象,

cocos项目移植android(一) 公司派我负责cocos项目移植android平台的任务,(我自己),之前搞过一点NDK,并没有cocos项目移植经验,身边也没人去问,所以本人开启苦模式。各种度

cocos2dx 资源加密 总连接:

标签: cocos-creator

本文链接地址:https://www.jiuchutong.com/biancheng/369043.html 转载请保留说明!

上一篇:铁嘴李的Cocos2dx之旅之Vector用法(铁嘴银牙剧情简介)

下一篇:cocos2d基础介绍(cocos2dx4.0教程)

  • 应交税费负数调整到其他流动资产
  • 财务软件怎么样才能用
  • 个体工商户取得经营所得的个人自行申报缴纳个人所得税
  • 支付股权转让费会计科目
  • 民办非企业单位设立分机构
  • 工资结算单属于通用凭证吗
  • 土地置换账务处理流程
  • 购入固定资产会影响营业利润吗
  • 资产负债表应交税费从哪取数
  • 退款扣除的手续费怎么查
  • 结转预交增值税会计处理
  • 员工内部跑步活动费用怎么做分录?
  • 物业公司收取的电费怎么确认收入
  • 货物抵扣如何入账
  • 物管费开票可以开公司名称吗
  • 土地增值税计税依据
  • 加工费的增值税税率是多少
  • 公司注销过了公示期不去有问题
  • 国家税务局通用定额发票还能用吗
  • 广告租赁公司
  • 企业赠送客户产品如何账务处理
  • 企业捐赠如何入账
  • 上年预收账款算不算本年收入
  • linux 数据类型
  • 环保税与排污费的联系
  • 最常用的成本核算方法表
  • 前端vscode配置
  • 减税性质代码及名称农业
  • 基于深度学习的车型识别系统(Python+清新界面+数据集)
  • 对方开具红字发票,我方怎么查询
  • php虚拟主机
  • 销售旧货和销售使用过的固定资产
  • java多线程经典案例
  • 科技型中小微企业贷款贴息贴保项目入库
  • 购入不动产进项税额怎么抵扣
  • 小规模减免附加税会计分录怎么做
  • 电子承兑汇票兑现扣几个点
  • 捐赠纳税调整额怎么算
  • 应交税费期末余额在借方怎样处理
  • 保险赔偿款账务处理
  • 在建工程抵押贷款的用途为在建工程继续建造所需资金
  • 收到银行退回的手续费怎么做会计分录
  • 房租没有发票如何交税
  • 收到对公打款认证怎么入账
  • 应收账款无法收回说明模板
  • 上年的原材料发票可以算今年的成本吗
  • 返还利润含税吗
  • 材料采购是什么会计要素
  • 保险可以税前扣除吗
  • 符合条件的有
  • 进口固定资产的汇率怎么算
  • ubuntu kylin 14.10下多个mysql 5.7.14安装教程
  • 最新版手机
  • Windows 8.1下MySQL5.7 忘记root 密码的解决方法
  • 游戏卡怎么打开
  • win7小技巧
  • 笔记本带u
  • 苹果电脑定制键盘
  • bios 设置
  • windows十桌面
  • linux操作系统版本有哪些
  • smss.exe什么意思
  • mac光盘无法退出怎么解决
  • find命令支持哪些查找方式
  • win70
  • web前端开发应届生简历
  • Quick cocos2dx-Lua(V3.3R1)学习笔记(8) ---- 事件篇之单点触摸事件,让我们用精灵模仿一个按钮吧
  • 微信小程序支付的钱怎么退款
  • 在下次启动计算机时会自动关机。重起后恢复正常(“绿色版”)
  • 不宜用于
  • angularjs2
  • nodejs mocha
  • angularjs2
  • 梦见擦窗户框
  • Unity NGUI Tween的用法
  • unity3ds
  • 谷歌的全球化发展战略
  • jquery将文本框设置为只读
  • 工商局税务局合并了吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设