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.mzph.cn/news/592596.shtml

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

相关文章

C++初阶——类与对象

目录 C宏函数 在使用宏函数时&#xff0c;有几个常见的错误需要注意&#xff1a; 宏函数在某些情况下有以下优势&#xff1a; 1.C宏函数 在 C 中&#xff0c;宏函数&#xff08;Macro Function&#xff09;是使用预处理器定义的宏&#xff08;Macro&#xff09;&#xff0…

初识Linux下进程

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

初识Java并发,一问读懂Java并发知识文集(4)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

智能标志桩:防盗防外物入侵_图像监测_态势感知_深圳鼎信

智能标志桩是一种新型的智能化标志设备&#xff0c;主要用于标识地下管道的位置、类型等&#xff0c;起警示作用。这与传统的标志桩大不相同&#xff0c;物联网的高速发展赋予了智能标志桩科技的力量&#xff0c;使它可以连接互联网&#xff0c;还具备图像监控的功能&#xff0…

2024年P气瓶充装证考试题库及P气瓶充装试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年P气瓶充装证考试题库及P气瓶充装试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的P气…

C++Qt6 多种排序算法的比较 数据结构课程设计 | JorbanS

一、 问题描述 在计算机科学与数学中&#xff0c;一个排序算法&#xff08;英语&#xff1a;Sorting algorithm&#xff09;是一种能将一串资料依照特定排序方式排列的算法。最常用到的排序方式是数值顺序以及字典顺序。有效的排序算法在一些算法&#xff08;例如搜索算法与合…

Linux系统操作常用指令

打开终端&#xff1a; ctrlshiftt:切换标签 ctrlshiftn:新增窗口 Linux命令大全(超详细版)_第二范式的博客-CSDN博客 VMware运行时以管理员身份运行&#xff0c;可以避免许多问题。 输入法切换 ctrl 空格 放大终端&#xff1a;ctrlshift"" 缩小终端&#xff1a;ctrl“…

【深度学习-基础学习】Transformer 笔记

本篇文章学习总结 李宏毅 2021 Spring 课程中关于 Transformer 相关的内容。课程链接以及PPT&#xff1a;李宏毅Spring2021ML这篇Blog需要Self-Attention为前置知识。 Transfomer 简介 Transfomer 架构主要是用来解决 Seq2Seq 问题的&#xff0c;也就是 Sequence to Sequence…

web前端——clear可以清除浮动产生的影响

clear可以解决高度塌陷的问题&#xff0c;产生的副作用要小 未使用clear之前 <!DOCTYPE html> <head><meta charset"UTF-8"><title>高度塌陷相关学习</title><style>div{font-size:50px;}.box1{width:200px;height:200px;backg…

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

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

[每周一更]-(第53期):Python3和Django环境安装并搭建Django

Python和Django 的安装 Python和Django 兼容情况 django 1.11.x python 2.7 3.4 3.5 3.6 LTS python 目前在用版本 Python 3.6.5 2018-03-28 更新Python 2.7.15 2018-05-01 更新Python 2.7.5 2013-05-12 更新 python和python3安装pip 同时安装上 python2.7.18、python3.11…

c语言结构体学习上篇

文章目录 前言一、结构体的声明1&#xff0c;什么叫结构体?2&#xff0c;结构体的类型3,结构体变量的创建和初始化4&#xff0c;结构体的类型5&#xff0c;结构体的初始化 二、结构体的访问1&#xff0c;结构体成员的点操作符访问2&#xff0c;结构体体成员的指针访问 前言 昨…

用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成 --【本人】

一、插件安装 1.1 搜索插件 mybatis 安装 1.2 接受安装 1.3 再次进入&#xff0c;说明安装好了 1.4 与鱼皮不同点 1&#xff09;mybatis 版本不一致 鱼皮&#xff1a; 本人&#xff1a; 2&#xff09;鱼皮需重启安装 本人不需要 1.5 【需完成 三、步骤&#xff0c;再来看】 …

Git - 强制替换覆盖 master 分支解决方案

问题描述 在版本迭代中&#xff0c;通常会保持一个主分支 master&#xff0c;及多个 dev 分支&#xff0c;但是因为 dev 分支的开发周期过长&#xff0c;迭代太多而没有及时维护 master &#xff0c;导致后来发版上线的大部分代码都在 dev 分支上&#xff0c;如果将代码在 mas…

LiveGBS流媒体平台GB/T28181功能-用户管理通道权限管理关联通道支持只看已选只看未选添加用户备注角色

LiveGBS功能用户管理通道权限管理关联通道支持只看已选只看未选添加用户备注角色 1、用户管理2、添加用户3、关联通道3.1、只看已选3.2、只看未选 4、自定义角色5、搭建GB28181视频直播平台 1、用户管理 LiveGBS支持用户管理&#xff0c;添加用户&#xff0c;及配置相关用户权…

promise.prototype.finally重写和兼容火狐低版本浏览器

一、finally()方法用于指定不管 Promise 对象最后状态如何&#xff0c;都会执行的操作。该方法是 ES2018 引入标准的 let promise new Promise() promise .then(result > {}) .catch(error > {}) .finally(() > {})finally方法的回调函数不接受任何参数;finally方法…

element-ui Tree 树形控件 过滤保留子级并获取过滤后的数据

本示例基于vue2 element-ui element-ui 的官网demo是只保留到过滤值一级的&#xff0c;并不会保留其子级 目标 1、Tree 树形控件 保留过滤值的子级 2、在第一次过滤数据的基础上进行第二次过滤 先看效果 Tree 树形控件 保留过滤值的子级 <el-treeclass"filter-t…

直观从零理解 梯度下降(Gradient descent) VS 随机梯度下降 (Stochastic gradient descent) 函数优化

首发于Data Science 单变量微分(Differentiation) 常用基本微分有&#xff1a; 四则运算法则&#xff1a; 链式法则(Chain-rule) 极大值(maxima)与极小值(minima) 向量微分 梯度下降(Gradient descent):几何直觉 学习率&#xff08;Learning Rate&#xff09;的直观理解…

笔记中所得(已删减)

1.交流电的一个周期内电压/电流的平均值都为0 2.电动势:电池将单位正电荷由负极搬到正极所做的功 5.额定能量:电池的额定容量乘以标称电压,以Wh为单位 6.500mAh意义是可以以500mA的电流放电1小时 7.电池容量的单位是mAh 13.实际电流源不能串联 14. 15. 16. 17. 18. 19.电…

C++ 二进制图片的读取和blob插入mysql_stmt_init—新年第一课

关于二进制图片的读取和BLOB插入一共包含五步 第一步&#xff1a;初始化 MYSQL_STMT* stmt mysql_stmt_init(&mysql); 第二步&#xff1a;预处理sql语句 mysql_stmt_prepare(stmt,sql,sqllen); 第三步&#xff1a;绑定字段 mysql_stmt_bind_param(stmt,bind); 第四…