| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- // 导入 Cocos Creator 核心模块
- const { Director, director } = cc;
- /** 时间工具 */
- const TimeUtil = {
- /**
- * 间隔天数
- * @param {number|string|Date} time1 开始时间
- * @param {number|string|Date} [time2] 结束时间(可选,默认当前时间)
- * @returns {number} 间隔天数
- */
- daysBetween(time1, time2) {
- if (time2 == undefined) {
- time2 = +new Date();
- }
- let startDate = new Date(time1).toLocaleDateString();
- let endDate = new Date(time2).toLocaleDateString();
- let startTime = new Date(startDate).getTime();
- let endTime = new Date(endDate).getTime();
- return Math.abs((startTime - endTime)) / (1000 * 60 * 60 * 24);
- },
- /**
- * 间隔秒数,时间顺序无要求,最后会获取绝对值
- * @param {number} time1 时间戳1(毫秒)
- * @param {number} time2 时间戳2(毫秒)
- * @returns {number} 间隔秒数(向下取整后+1)
- */
- secsBetween(time1, time2) {
- let dates = Math.abs((time2 - time1)) / (1000);
- dates = Math.floor(dates) + 1;
- return dates;
- },
- /**
- * 代码休眠时间
- * @param {number} ms 休眠时间(秒)
- * @returns {Promise<void>} Promise 对象
- */
- sleep(ms) {
- return new Promise((resolve) => {
- setTimeout(() => {
- resolve();
- }, ms * 1000);
- });
- },
- /**
- * 等待下一帧
- * @returns {Promise<void>} Promise 对象
- */
- nextFrame() {
- return new Promise((resolve) => {
- requestAnimationFrame(() => {
- resolve();
- });
- });
- },
- /**
- * 将时间戳转换为指定格式的日期时间字符串
- * @param {number} timestamp 要转换的时间戳,单位为毫秒
- * @returns {string} 格式为 "年-月-日 时:分:秒" 的日期时间字符串
- */
- timeStampConvertStr(timestamp) {
- let date = new Date(timestamp);
- let formattedDate = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
- return formattedDate;
- }
- };
- /**
- * 时间间隔控制器,用于控制事件触发的频率
- * (对应原 TS 中的静态内部类 TimeIntervalController)
- */
- TimeUtil.TimeIntervalController = class {
- /**
- * 构造函数
- * @param {number} interval 间隔时间(毫秒)
- */
- constructor(interval) {
- this.lastTriggerTime = 0;
- this.interval = interval;
- }
- /**
- * 检查是否可以触发事件
- * @returns {boolean} true表示可以触发,false表示不能触发
- */
- canTrigger() {
- const currentTime = Date.now();
- if (currentTime - this.lastTriggerTime >= this.interval) {
- this.lastTriggerTime = currentTime;
- return true;
- }
- return false;
- }
- /**
- * 重置时间间隔控制器
- */
- reset() {
- this.lastTriggerTime = 0;
- }
- /**
- * 获取剩余时间
- * @returns {number} 距离下次可以触发的剩余时间(毫秒)
- */
- getRemainingTime() {
- const now = Date.now();
- const elapsed = now - this.lastTriggerTime;
- const remaining = this.interval - elapsed;
- return remaining > 0 ? remaining : 0;
- }
-
- };
- // 导出工具类,供其他文件导入
- module.exports = { TimeUtil };//使用 CommonJS 模块导出方式
|