倒计时(CocosCreator)

举报
爱上游戏开发 发表于 2022/07/01 23:12:25 2022/07/01
【摘要】 推荐阅读:  我的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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。