javascript 常见工具函数(四)

31.RGB值和十六进制值之间的转换:

(1)十六进制的颜色转为 RGB格式:

    /*16进制颜色转为RGB格式*/String.prototype.colorRgb = function () {var sColor = this.toLowerCase();if (sColor && reg.test(sColor)) {if (sColor.length === 4) {var sColorNew = "#";for (var i = 1; i < 4; i += 1) {sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));}sColor = sColorNew;}//处理六位的颜色值var sColorChange = [];for (var i = 1; i < 7; i += 2) {sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2)));}return "RGB(" + sColorChange.join(",") + ")";} else {return sColor;}}

(2)RGB值转换为 十六进制的颜色:

var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;String.prototype.colorHex = function () {var that = this;if (/^(rgb|RGB)/.test(that)) {var aColor = that.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(",");var strHex = "#";for (var i = 0; i < aColor.length; i++) {var initHexNum = Number(aColor[i]);var hex = Number(aColor[i]).toString(16);if (hex === "0") {hex += hex;}else if(hex<16 && initHexNum < 16){hex = "0"+hex;}strHex += hex;}if (strHex.length !== 7) {strHex = that;}return strHex;} else if (reg.test(that)) {var aNum = that.replace(/#/, "").split("");if (aNum.length === 6) {return that;} else if (aNum.length === 3) {var numHex = "#";for (var i = 0; i < aNum.length; i += 1) {numHex += (aNum[i] + aNum[i]);}return numHex;}} else {return that;}};

32.判断两个对象是否相等:

/**** @param {*} obj1* @param {*} obj2*/static ObjEqual(obj1, obj2) {var props1 = Object.getOwnPropertyNames(obj1);var props2 = Object.getOwnPropertyNames(obj2);if (props1.length != props2.length) {return false;}for (var i = 0, max = props1.length; i < max; i++) {var propName = props1[i];if (obj1[propName] !== obj2[propName]) {return false;}}return true;}

33.判断是否隔天:

   /*** 获取某一天的0点时间戳*/static getZeroTime$() {return Date.parse((new Date()).toDateString());}//根据零点时间戳判断,是否间隔一天/** 一天毫秒数 */GameSetting$.DAY_MIllISECOND$ = 86400000;//存储当前的0点时间戳//下次判断的时候,获取当前时间戳 - 存储的0点时间戳//如果大于 一天的毫秒数,就说明隔天了;否则就是没有隔天,还在当天

34.24小时倒计时函数:

   /** 24小时倒计时 */static countdown24$() {let now = new Date();         // 获取当前时间let hour = now.getHours();    // 时let min = now.getMinutes();   // 分let sec = now.getSeconds();   // 秒let h = 24 - hour;            // 倒计时 时if (min > 0 || sec > 0) {h -= 1}let m = 60 - min;             // 倒计时 分if (sec > 0) {m -= 1}if (m == 60) {m = 0}let s = 60 - sec;             // 倒计时 秒if (s == 60) {s = 0}h = h.toString();m = m.toString();s = s.toString();if (h.length == 1) {h = '0' + h}if (m.length == 1) {m = '0' + m}if (s.length == 1)s = '0' + slet result = h + ':' + m + ':' + sreturn result}

35.刷新倒计时 cd 奖励:

 refreshOnlineUI$() {if(!this.isRefreshOnlineT$) return;let onlineCD = this.onlineRewardNeedT$ - this._useData$.onlineT$;if(onlineCD > 0) {this.img_online_ok_mark$.visible = false;let minute = Math.floor(onlineCD / 60000);let seconds = Math.ceil(onlineCD % 60000 / 1000);this.label_online_cd$.text = (minute < 10 ? "0" + minute : minute) + ":" + (seconds < 10 ? "0" + seconds : seconds);let p = onlineCD / this.onlineRewardNeedT$;this.img_online_cd$.mask.graphics.clear();this.img_online_cd$.mask.graphics.drawPie(0, 0, 50, 270  - 360 * p, 270,"#ff0000");}else{//计时结束this.onOnlineRewardCdComplete$();}}//this._useData$.onlineT$   用户在线时间
//this.onlineRewardNeedT$   领取奖励需要的在线时间

倒计时--cd显示的mask样式:

(1)玩家在线时长:

onUpdate$() {this._refreshOnlineReward$();}/*** 刷新在线奖励*/_refreshOnlineReward$() {if(!this._isNeedRefreshOnlineReward$)return;this._isNeedRefreshOnlineReward$ = this._userData$.addOnlineT$(Laya.timer.delta);}/*** 增加在线时长 ms* @param {*} deltaT*/addOnlineT$(deltaT) {this._onlineT$ = this.onlineT$ + deltaT;LocalData$.setLocalData$(LocalData$.KEY$.ONLINE_T$, this._onlineT$);return this._onlineT$ != GameSetting$.ONLINE_REWARD_T$;}/*** 获取在线时长*/get onlineT$() {if (this._onlineT$ == void 0)this._onlineT$ = LocalData$.getLocalData$(LocalData$.KEY$.ONLINE_T$, 0);return this._onlineT$;}

36.数组随机个数:

randomArrCnt$(arr, count) {var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;while (i-- > min) {index = Math.floor((i + 1) * Math.random());temp = shuffled[index];shuffled[index] = shuffled[i];shuffled[i] = temp;}return shuffled.slice(min);}

37.setHours() 方法:设置指定时间的小时字段

dateObject.setHours(hour,min,sec,millisec)

38.获取重置某功能的时间戳:一般传 参数 0,返回隔天需要重置某功能的时间戳

getResetTimeStamp$(e) {let date = new Date(new Date().setHours(e, 0, 0, 0));let time = date.getTime();time < new Date().getTime() && (date.setDate(date.getDate() + 1), time = date.getTime());return time;
}//加载重置的时间戳:load$(key, t, i = 0) {let s = GameStorage$.getResetTimeStamp$(i);t = Object.assign({resetTimeStamp: s}, t);let n = LocalStorage.getItem(key, t);return void 0 === n.resetTimeStamp || n.resetTimeStamp < new Date().getTime() ? t : n;
}//存储重置的时间戳:save$(key, t, i = 0) {let s = GameStorage$.getResetTimeStamp$(i);let n = Object.assign({resetTimeStamp: s}, t);LocalStorage.setItem(key, n);}

39.将值限制在某个区间内

/** 落在某个区间内的值(将值限制在某个区间内) */
window.clamp = function (value, min, max) {if (min > max) {let tmp = min;min = max;max = tmp;}return value < min ? min : value > max ? max : value;
}

40.时分秒格式转化:

 static formatTime$(e, needHour = true) {let sec = Math.floor(e % 60);let formatSec = sec < 10 ? "0" + sec : sec.toString();let min = Math.floor(e / 60) % 60;let formatMin = min < 10 ? "0" + min : min.toString();let hour = Math.floor(Math.floor(e / 60) / 60);let formatHour = hour < 10 ? "0" + hour : hour.toString();return needHour ? (formatHour + ":" + formatMin + ":" + formatSec) : (formatMin + ":" + formatSec);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/229557.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车载 Android之 核心服务 - CarPropertyService 解析

重要类的源码文件名及位置&#xff1a; CarPropertyManager.java packages/services/Car/car-lib/src/android/car/hardware/property/ CarPropertyService.java packages/services/Car/service/src/com/android/car/ 类的介绍&#xff1a; CarPropertyManager&#xff1a…

【BERT】深入BERT模型2——模型中的重点内容,两个任务

前言 BERT出自论文&#xff1a;《BERT&#xff1a;Pre-training of Deep Bidirectional Transformers for Language Understanding》 2019年 近年来&#xff0c;在自然语言处理领域&#xff0c;BERT模型受到了极为广泛的关注&#xff0c;很多模型中都用到了BERT-base或者是BE…

计算机网络实验(六):三层交换机实现VLAN间路由

一、实验名称:三层交换机实现VLAN间路由 二、实验原理 2.1. VLAN基本配置 在交换网络中,为了实现对物理网络的逻辑划分,引入了VLAN(虚拟局域网)的概念。VLAN通过将不同的设备划分到不同的虚拟网络中,实现了逻辑隔离。基本配置包括在交换机上创建VLAN、将端口划分到相应…

深度学习MLP_实战演练使用感知机用于感情识别_keras

目录 &#xff08;1&#xff09;why deep learning is game changing?&#xff08;2&#xff09;it all started with a neuron&#xff08;3&#xff09;Perceptron&#xff08;4&#xff09;Perceptron for Binary Classification&#xff08;5&#xff09;put it all toget…

初识Linux下进程

&#x1f30e;初识进程 初识进程 简单认识一下进程 如何管理进程 进程属性信息 内核运行队列 查看进程 通过系统调用获取进程标识符       父子进程       查看运行中的进程 总结 前言&#xff1a; 我们在电脑上点开的一个个应用&#xff0c;其实就是一个个进程&am…

CMake支持的编译平台和IDE

文章目录 简介支持的IDEVisual Studio支持示例 其他编译器和生成器支持MinGW示例 IDE集成Eclipse示例 实验性和特殊平台支持总结 简介 CMake是一个非常强大的跨平台自动化构建工具&#xff0c;它支持生成多种类型的项目文件&#xff0c;覆盖了广泛的开发环境和编译器。在这篇博…

【Java】SpringBoot整合xxl-job学习使用详解

文章目录 介绍作用如何使用下载项目中央仓库地址环境调度中心初始化“调度数据库”配置部署“调度中心”部署项目调度中心集群&#xff08;可选&#xff09;其他&#xff1a;Docker 镜像方式搭建调度中心配置部署“执行器项目” 执行器maven依赖执行器配置执行器组件配置执行器…

天津Java入门培训班 如何选择Java机构?

作为最受欢迎的编程语言&#xff0c;Java简直是IT领域的敲门砖&#xff0c;只要精通Java语言&#xff0c;找到好工作&#xff0c;进入大企业又多了一层保障。很多人都向往Java编程的广阔就业前景&#xff0c;却苦于不懂Java编程知识&#xff0c;一直在自学和参加培训中纠结。 …

设计模式:简单工厂模式、工厂方法模式、抽象工厂模式

简单工厂模式、工厂方法模式、抽象工厂模式 1. 为什么需要工厂模式&#xff1f;2. 简单工厂模式2.1. 定义2.2. 代码实现2.3. 优点2.4. 缺点2.5. 适用场景 3. 工厂方法模式3.1. 有了简单工厂模式为什么还需要有工厂方法模式&#xff1f;3.2. 定义3.3. 代码实现3.4. 主要优点3.5.…

LinkedList与ArrayList的比较

1.LinkedList 基于双向链表&#xff0c;无需连续内存 随机访问慢&#xff08;要沿着链表遍历&#xff09; 头尾插入删除性能高 占用内存多 2.ArrayList 基于数组&#xff0c;需要连续内存 随机访问快&#xff08;指根据下标访问&#xff09; 尾部插入、删除性能可以&…

挑战 ChatGPT 和 Google Bard 的防御

到目前为止&#xff0c;科学家已经创建了基于人工智能的聊天机器人&#xff0c;可以帮助内容生成。我们还看到人工智能被用来创建像 WormGPT 这样的恶意软件&#xff0c;尽管地下社区对此并不满意。但现在正在创建聊天机器人&#xff0c;可以使用生成人工智能通过即时注入活动来…

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(1)

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜&#xff0c;Kotlin&#xff08;1&#xff09; 实现查看图片的放大镜&#xff0c;放大镜随着手指在屏幕上的移动&#xff0c;放大镜里面展示手指触点为中心、半径长度的圆形放大后的图片。 剪切出一块圆形Path…

K8S集群部署MySql

挂载MySQL数据卷 在k8s集群中挂载MySQL数据卷 需要安装一个NFS。 在主节点安装NFS yum install -y nfs-utils rpcbind 在主节点创建目录 mkdir -p /nfs chmod 777 /nfs 更改归属组与用户 chown -R nfsnobody:nfsnobody /nfs 配置共享目录 echo "/nfs *(insecure,rw,s…

大数据平台Bug Bash大扫除最佳实践

一、背景 随着越来越多的"新人"在日常工作以及大促备战中担当大任&#xff0c;我们发现仅了解自身系统业务已不能满足日常系统开发运维需求。为此&#xff0c;大数据平台部门组织了一次Bug Bash活动&#xff0c;既能提升自己对兄弟产品的理解和使用&#xff0c;又能…

【已解决】打印PDF文件,如何跳过不需要的页面?

打印PDF文件的时候&#xff0c;有时候我们只需要打印其中的几页&#xff0c;并不需要全部打印&#xff0c;那如何在打印时跳过那些不需要的页面呢&#xff1f;不清楚的小伙伴一起来看看吧&#xff01; 如果你是通过网页打开PDF文件&#xff0c;那么可以在页面中找到并点击“打…

k8s的声明式资源管理

在k8s当中支持两种声明资源的方式&#xff1a; 1、 yaml格式&#xff1a;主要用于和管理资源对象 2、 json格式&#xff1a;主要用于在API接口之间进行消息传递 声明式管理方法(yaml)文件 1、 适合对资源的修改操作 2、 声明式管理依赖于yaml文件&#xff0c;所有的内容都…

内存管理机制

内存管理机制与内存映射相关。 一、C与C 之所以将C与C放在一起是因为C是C的超集&#xff1b; 但是C是面向过程语言&#xff0c;C是面向对象的语言&#xff1b; C与C都可以使用malloc、calloc、realloc来申请内存空间&#xff1b; 其中void* malloc(size_t size)是在内存的动态…

2023年度回顾:怿星科技的转型与创新

岁月不居&#xff0c;时节如流。随着2023年的落幕&#xff0c;怿星科技在这一年中不仅实现了自身的转型&#xff0c;还在技术创新、产品研发、行业合作和人才培养等方面取得了显著的成就。这一年&#xff0c;怿星科技正式完成了从服务型公司向产品型公司的战略转变&#xff0c;…

软件测试方法分类-按照开发阶段划分细讲

前面我给出了整体的软件测试分类&#xff0c;那么接下来&#xff0c;我会将每个分类进行细讲。 第一个我们要说到的就是按照开发阶段划分。 我们都知道软件测试方法分类中&#xff0c;如果按照开发阶段划分&#xff0c;可以分为&#xff1a; 1&#xff0c;单元测试 (Unit Te…

VMware 虚拟机 ubuntu 20.04 硬盘扩容方法

前言 最近由于需要编译 【RK3568】的 Linux SDK&#xff0c;发现 虚拟机默认的 200G 空间不足了&#xff0c;因此想增加这个 200G 空间的限制&#xff0c;通过网络上查找了一些方法&#xff0c;加上自己亲自验证&#xff0c;确认 硬盘扩容 正常&#xff0c;方法也比较的容易&a…