简单易用的跑马灯-Cocos Creator

2024-03-15 00:20

本文主要是介绍简单易用的跑马灯-Cocos Creator,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文概要

本次我要分享的是,在游戏中非常常用的一个功能-跑马灯。可能在游戏中的通知公告、弹幕消息中用到。

 

效果图

 

 

实现思路

这里用到了遮罩Mask组件,Mask 用于规定子节点可渲染的范围,带有 Mask 组件的节点会使用该节点的约束框(也就是 属性检查器 中 Node 组件的 Size 规定的范围)创建一个渲染遮罩,该节点的所有子节点都会依据这个遮罩进行裁剪,遮罩范围外的将不会渲染。

 

创建一个带有遮罩Mask的Node,然后再创建一个带有Sprite组件的Node作为跑马灯的背景,再就是创建带有一个RichText(或者Label)组件的Node。

然后把Label的锚点设置为(0,0.5),最好是将锚点X设置为0,这样的话,Label节点的水平位置会以节点的左边界为基准。便于后面的位置计算。

 

在这里主要是处理Label节点的位置的变化,一直以某个速度往某个方向偏移,比如一直往右偏移,那么就在update中,每帧将x坐标加一个定值,刷新后,节点的位置自然就会往右偏移。往左偏移,处理方式也是一样的。每帧将x坐标减一个定值。

 

要考虑的是边界情况,一旦Label偏移到了Mask的边界,例如到了Mask右边界,那我们就把Label的位置设置为Mask的左边界x坐标 - Label的宽度width,防止Label直接出现在Mask中,显得十分突兀。那如果是往左偏移,到了Mask左边界 - Label的宽度width,那就直接将Label的x坐标设置为Mask的右边界x坐标,即可实现效果。

 

上代码

 

const { ccclass, property } = cc._decorator;enum Direction {LEFT_TO_RIGHT = 1,RIGHT_TO_LEFT,
}@ccclass
export default class HorseReceLamp extends cc.Component {@property(cc.RichText)label: cc.RichText = null;@property(cc.Mask)maskNode: cc.Mask = null;@property({tooltip:"每秒移动多少像素",})m_speed: number = 100;@propertytext: string = 'hello';m_xLeftEnd: number = 0;m_xRightEnd: number = 0;m_yPos: number = 0;@property({tooltip:"文字滚动的方向,1是从左到右,2是从右到左",})m_direction: number = Direction.LEFT_TO_RIGHT;start() {// init logicthis.label.string = this.text;this.m_xRightEnd = this.node.x + this.maskNode.node.width * this.maskNode.node.anchorX;this.m_xLeftEnd = this.node.x - this.maskNode.node.width * this.maskNode.node.anchorX;let contentSize = this.label.node.getContentSize();let xPos:number = 0;if(this.m_direction === Direction.LEFT_TO_RIGHT){xPos = this.m_xLeftEnd - contentSize.width;}else{xPos = this.m_xRightEnd;}this.label.node.x = xPos;this.label.node.y = this.m_yPos;}update(dt) {if (this.m_direction === Direction.LEFT_TO_RIGHT) {let contentSize = this.label.node.getContentSize();if (this.label.node.x >= this.m_xRightEnd) { this.label.node.x = this.m_xLeftEnd - contentSize.width;}this.label.node.x += this.m_speed * dt;}else{let contentSize = this.label.node.getContentSize();if (this.label.node.x <= this.m_xLeftEnd - contentSize.width) { this.label.node.x = this.m_xRightEnd;}this.label.node.x -= this.m_speed * dt;}}
}

 

实用功能集锦,尽在https://github.com/CoderXZ/CocosCreatorDemo

结束语

我是小周,一名移动开发程序员。每天学习一点点,从小白到大牛,并非遥不可及。加油!

以上都是小周的个人观点,与大家一起分享学习,如有错误,还请指出,一起学习,一起进步!感谢你的关注!

 

 

 

这篇关于简单易用的跑马灯-Cocos Creator的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/810186

相关文章

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3