需求:给定一个时间戳,计算剩余时间并进行倒计时
//更新截止时间private updateCountdownTime(timestamp) {const currentTime = Math.floor(Date.now() / 1000); //当前时间(秒)const targetTime = Math.floor(timestamp / 1000);// 给定时间戳(秒)// 时间换算,截止时间到当前时间const difference = targetTime - currentTime; // 时间差(秒)if (difference <= 0) {this.countdown.string = "已截止";return;}const days = Math.floor(difference / (3600 * 24)); // 截止天数 const hours = Math.floor((difference / 3600) % 24); //截止小时const minutes = Math.floor((difference / 60) % 60); // 截止分const remainingSeconds = difference % 60; //剩余秒const hStr = hours < 10 ? ('0' + hours) : hours;const mStr = minutes < 10 ? ('0' + minutes) : minutes;const sStr = remainingSeconds < 10 ? ('0' + remainingSeconds) : remainingSeconds;this.countdown.string = `${days}:${hStr}:${mStr}:${sStr}`;}
然后在Start中调用cocos的计时器方法即可。
this.schedule(this.updateCountdownTime, 1, cc.macro.REPEAT_FOREVER, 1);
该方法原型如下:
(method) cc.Component.schedule(callback: Function, interval?: number, repeat?: number, delay?: number): void
调度一个自定义的回调函数。 如果回调函数已调度,那么将不会重复调度它,只会更新时间间隔参数。
具体内容可查看官方文档:
使用计时器 | Cocos Creator