需求:给定一个时间戳,计算剩余时间并进行倒计时
TypeScript
//更新截止时间
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的计时器方法即可。
TypeScript
this.schedule(this.updateCountdownTime, 1, cc.macro.REPEAT_FOREVER, 1);
该方法原型如下:
(method) cc.Component.schedule(callback: Function, interval?: number, repeat?: number, delay?: number): void
调度一个自定义的回调函数。 如果回调函数已调度,那么将不会重复调度它,只会更新时间间隔参数。
具体内容可查看官方文档: