倒计时(CocosCreator)
【摘要】
推荐阅读:
我的CSDN 我的博客园 QQ群:704621321
在游...
推荐阅读:
在游戏中,还有一个经常使用的功能就是倒计时。比如:距离活动开奖时间;当前活动的剩余时间等,都会用到倒计时,下面给大家讲讲根据当服务器发送的数据,实现倒计时功能。
1.服务器发送剩余时间戳(毫秒)
countdown(remainTime,txt) {
var self = this;
let time = parseInt(remainTime/ 1000);
var call1 = app.callFunc(function (adt) {
time = time - 1;
txt.string = self.formatTime(Math.max(0, time));
if (time <= 0) {
txt.node.stopAllActions();
}
}, txt.node);
var delay = cc.delayTime(1);
txt.node.runAction(cc.repeatForever(cc.sequence(call1, delay)));
},
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
/// 计算时间格式
formatTime(t) {
var h = Math.floor(t / 3600);
var m = Math.floor(t % 3600 / 60);
var s = Math.floor(t % 3600 % 60);
return "{0}{1}{2}".format(h > 0 ? (this.addZero(h) + ":") : "00:",this.addZero(m) + ":") : "00:", s > 0 ? (this.addZero(s) + "") : "00");
},
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2.服务器发送开始,结束时间戳(毫秒)
countdown(end,txt) {
var self = this;
txt.node.stopAllActions();
var timestamp = Date.parse(new Date());//获取当前时间戳
let time = parseInt((end - timestamp) / 1000);
var call1 = app.callFunc(function (adt) {
time = time - 1;
txt.string = self.formatTime(Math.max(0, time));
if (time <= 0) {
txt.node.stopAllActions();
}
}, txt.node);
var delay = cc.delayTime(1);
txt.node.runAction(cc.repeatForever(cc.sequence(call1, delay)));
},
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
/// 计算时间格式
formatTime(t) {
var h = Math.floor(t / 3600);
var m = Math.floor(t % 3600 / 60);
var s = Math.floor(t % 3600 % 60);
return "{0}{1}{2}".format(h > 0 ? (this.addZero(h) + ":") : "00:",this.addZero(m) + ":") : "00:", s > 0 ? (this.addZero(s) + "") : "00");
},
- 1
- 2
- 3
- 4
- 5
- 6
- 7
3.总结
比较上面两种情况,大致思想都是一样的,都用用的剩余时间戳计算倒计时的,在函数formatTime中,用于将秒为单位的时间转换为00:00:00的形式。唯一不同的是情况(1)中剩余时间戳是已知的;情况二中需要用:结束时间—戳当前时间戳=剩余时间戳。
文章来源: unity3d.blog.csdn.net,作者:爱上游戏开发,版权归原作者所有,如需转载,请联系作者。
原文链接:unity3d.blog.csdn.net/article/details/91383669
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)