javascript 常见工具函数(四)

news2024/11/19 9:34:12

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' + s
        let result = h + ':' + m + ':' + s
        return 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.coloradmin.cn/o/1351768.html

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

相关文章

【通讯录案例-登录功能-Segue Objective-C语言】

一、我们接下来呢,来说这个登录按钮的实现, 1.我们来实现一下这个登录按钮的一个功能啊, 比如说,当我点击“登录”了以后,我要跳到后边儿的那个TableView, 首先呢,我们来看一下示例程序,参考一下, 当我们上边这两个文本框都有值的时候, 当这两个文本框都有值了以后…

Nginx - 使用error_page实现带有图片的自定义错误页面

文章目录 概述官网文档需求实现 概述 在Nginx中&#xff0c;您可以使用error_page指令来指定当请求遇到特定错误时应当显示的自定义错误页面。为了实现带有图片的自定义错误页面&#xff0c;可以按照以下步骤操作&#xff1a; 创建错误页面&#xff1a; 首先&#xff0c;需要…

three.js 多通道组合

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div style"border: 1px so…

计算机毕业论文内容参考|基于区块链技术的电子健康记录系统的设计与实现

文章目录 摘要前言绪论课题背景国内外相关研究课题内容区块链技术介绍系统分析用户需求分析系统设计系统实现系统测试总结与展望摘要 本文介绍了基于区块链技术的电子健康记录系统的设计与实现。该系统旨在解决传统电子健康记录系统存在的数据安全性、数据隐私性和数据互操作性…

HTML5和JS实现明媚月色效果

HTML5和JS实现明媚月色效果 先给出效果图&#xff1a; 源码如下&#xff1a; <!DOCTYPE html> <html> <head><title>明媚月光效果</title><style>body {margin: 0;overflow: hidden;background-color: #000; /* 添加一个深色背景以便看到…

新全国产迅为龙芯 3A6000 处理器板卡

11月28日&#xff0c;“2023龙芯产品发布暨用户大会”在北京举行&#xff0c;迅为作为龙芯重要合作伙伴受邀参加&#xff0c;在整机产品发布仪式上&#xff0c;展示了基于龙芯 3A6000 处理器的全国产安全型工控计算机。 龙芯 3A6000 处理器完全自主设计、性能优异&#xff0c;代…

《MySQL系列-InnoDB引擎02》InnoDB存储引擎介绍

文章目录 第二章 InnoDB存储引擎1 InnoDB存储引擎概述2 InnoDB存储引擎的版本3 InnoDB体系架构3.1 后台线程3.2 内存 4 Checkpoint技术5 Master Thread 工作方式5.1 InnoDB 1.0.x版本之前的Master Thread5.2 InnoDB 1.2.x版本之前的Master Thread5.3 InnoDB 1.2.x版本的Master …

Vue实现JSON字符串格式化编辑器组件

相信很多同学都用过网上的在线JSON格式化工具来将杂乱的JSON数据转换成易于我们阅读和编辑的格式。那么&#xff0c;你有没有想过自己动手实现一个这样的工具呢&#xff1f;今天&#xff0c;我将介绍如何使用Vue.js来构建一个简单的JSON格式化工具。 功能简述 支持格式化JSON字…

企业如何利用好数据,让数据真正成为数据资产?数据资产管理应该怎样建设?

数字化时代&#xff0c;数据已经成为了个人、机构、企业乃至国家的重要战略资产。 近日&#xff0c;财政部正式对外发布《企业数据资源相关会计处理暂行规定》&#xff0c;并自 2024 年 1 月 1 日开始施行。数据资产入表政策落地节奏超预期&#xff0c;标志着国家把数据作为生…

jstree高性能树型控件

一、直接上代码 这种基于服务器端生成Html结构&#xff0c;直接渲染为树&#xff0c;能很好的解决大树的问题。 {ViewData["Title"] "Home Page";Layout null; } <link href"~/jstree/themes/default/style.min.css" rel"stylesheet…

STM32CubeMX教程17 DAC - 输出三角波/噪声波

目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.1、外设初始化调用流程 3.2.2、外设中断调用流程 3.2.3、添加其他必要代码 4、常用函数 5、烧录验…

浪涌保护器的必要性和安装方案

浪涌保护器SPD是一种用于限制电力线路或信号线路上的瞬时过电压&#xff0c;并将其导入地线的装置&#xff0c;主要用于防止雷电或其他电源干扰对电气设备或电子设备造成损坏。浪涌保护器的类型和结构根据不同的用途和场合有所不同&#xff0c;但一般都包含一个或多个非线性电压…

后台管理系统 -- 点击导航栏菜单对应的面包屑和标签(Tag)的动态编辑功能

相信很多时候,面包屑和标签(Tag)的功能几乎是后台管理系统标配。 就是会随着路由的跳转来进行相应的动态更新。 我先展示一下效果: 1.面包屑 先说一下思路&#xff1a; 我们导航菜单点击之后,将当前显示路由对象存储到Vuex的storge里面,然后在面包屑组件里面,读取这个状态即可…

电子负载是如何实现这些功能的

电子负载模拟真实负载的电子设备&#xff0c;它可以吸收或释放电能&#xff0c;以实现对电源、电池、发电机等电源设备的测试和保护。电子负载的主要功能包括恒流、恒压、恒功率、恒电阻等模式&#xff0c;以及过压、过流、短路、过热等保护功能。那么&#xff0c;电子负载是如…

RAL论文:一种自感知扭转塔折纸软体机器人

折纸是一种以纸张折成各种不同形状的艺术活动。折纸与自然科学结合在一起&#xff0c;不仅成为建筑学院的教具&#xff0c;还发展出了折纸几何学成为现代几何学的一个分支。根据折痕的不同分布&#xff0c;可以将纸张折叠成不同的形状&#xff0c;例如有许多经典的折纸结构&…

东信免驱系列身份证阅读器串口通讯协议解析示例,适用于单片机、ARM等系统开发集成使用

完整的一次读卡流程包括&#xff1a; 身份证寻卡 > 身份证选卡 > 身份证读卡&#xff0c;三个步骤 缺一不可&#xff08;见通讯协议&#xff09;。 寻卡&#xff1a;EA EB EC ED 04 00 B0 B4 BB 返回&#xff1a;EA EB EC ED 05 00 00 B0 B5 BB 选卡&#xff1a;EA …

【EI会议征稿通知】2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024)

2024年第四届数字信号与计算机通信国际学术会议&#xff08;DSCC 2024&#xff09; 2024 4th International Conference on Digital Signal and Computer Communications 第四届数字信号与计算机通信国际会议(DSCC 2024)将于2024年4月12日至14日在中国-香港举行。DSCC 2024旨…

Java8新特性 Stream流详解

目录 1、介绍 2、获取Stream流的两种方式 方式一&#xff1a;根据Collection获取流 方式二&#xff1a;Stream中的静态方法of获取流 区别 3、Stream流注意事项 4、Stream流的常用方法 forEach count filter limit skip map sorted distinct match find max和…

【JAVA核心知识】分布式事务框架Seata

Seata 基本信息 GitHub&#xff1a;https://github.com/seata/seatastars: 20.6k 最新版本&#xff1a; v1.6.1 Dec 22, 2022 官方文档&#xff1a;http://seata.io/zh-cn/index.html 注意 官方仅仅支持同步调用。 官方在FAQ中表示对于异步框架需要自行支持。 具体的扩展思…

学习Go语言Web框架Gee总结--上下文Context(二)

学习Go语言Web框架Gee总结--上下文Context context/go.modcontext/main.gocontext/gee/context.gocontext/gee/router.gocontext/gee/gee.go 学习网站来源&#xff1a;Gee 项目目录结构&#xff1a; context/go.mod module examplego 1.21.5require gee v0.0.0 replace gee…