计时器(CocosCreator)

简介: 计时器(CocosCreator)
推荐阅读:

      在游戏中,经常会涉及到计时的功能,主要是倒计时。倒计时通常用在某项活动距离结束的剩余时间以及距离开始某项活动开始的时间。对于不同的游戏引擎,提供的计时方法也有所差异。最近正在使用CocosCreator开发项目,恰好也遇到了该需求,就来聊聊CocosCreator中计时功能的实现方法:
在CocosCreator中,提供了一个方法:

cc.repeatForever();

      对于这个方法的解释是:永远地重复一个动作,有限次数内重复一个动作请使用 repeat 动作由于这个动作不会停止,所以不能被添加到 cc.sequence 或 cc.spawn 中。
下面就是用该方法来实现计时效果:

 countDown(time) {
        var self = this;
        
        var call1 = app.callFunc(function (adt) {
            time = time - 1;
            cc.log("当前倒计时时间为:", time);
            if (time <= 0) {
                cc.log("倒计时结束~~~");
                self.uiRoot.countdown.stopAllActions();
            }
            self.uiRoot.txt_countdown.string = "" + self.formatTime(Math.max(0, time));
        }, self.uiRoot.countdown);
        
        var delay = cc.delayTime(1);
        self.uiRoot.countdown.runAction(cc.repeatForever(cc.sequence(call1, delay)));
    },

      上面的方法其实就是通过顺序执行一系列事情(time--),来达到计时的效果。其中self.uiRoot.countdown是计时文本的父节点,self.uiRoot.txt_countdown是计时器的显示文本。
      上面代码中的formatTime()方法,是通过给定一个时间值(秒),来转换为()天()时()分()秒,当然,你也可以通过实际情况决定返回的单位。formatTime代码如下:

    /// 计算时间格式
    formatTime(tm) {
        var d = Math.floor(tm / 86400)
        var h = Math.floor(tm % 86400 / 3600);
        var m = Math.floor(tm % 3600 / 60);

        var s = Math.floor(tm % 60);
        // return "{0}{1}{2}{3}".format(d > 0 ? ("" + d + "天") : "", h > 0 ? ("" + h + "时") : "", m > 0 ? ("" + m + "分") : "", s > 0 ? ("" + s + "秒") : "0秒");

        if (tm < 60) { return s; }
        return "{0}{1}{2}".format(d > 0 ? ("" + d + "天") : "", h > 0 ? ("" + h + "时") : "", m > 0 ? ("" + m + "分") : "");
    },

      当然,计时的方法肯定不止这一种,这只是实现计时器的一个方法,选择这个方法的原因时我觉得比较简单,易懂,如果你有更好的方法,欢迎屏幕下方留言~~

相关文章
|
运维 JavaScript 前端开发
brython | timer 计时器
brython | timer 计时器
93 1
实现计时器和倒计时工具(Unity3D)
今天分享一下如何基于Unity3D做计时器工具,为了方便演示,使用了UGUI的Text,代码简单具有拓展性,然后有什么错误或者意见也欢迎大家给我提出来。微信二维码已经显示在博客主页,有想要沟通学习的,项目外包的都可以加一下。 分享一下我另一篇关于时间计时的文章: 【Unity3D】获取到游戏时间,并显示出来
Qt | 定时器实现动画效果时卡住了
Qt通过使用定时器定时切换图片实现动画效果遇到的卡顿问题。
1043 0
Flutter 135: 图解 Timer & ACETimerButton 自定义计时器按钮
0 基础学习 Flutter,第一百三十五步:简单自定义 ACETimerButton 倒计时按钮!
413 0
|
iOS开发
iOS NSTimer 定时器用法总结
iOS NSTimer 定时器用法总结
263 0
编写一个闹钟和定时关机工具(MFC VS2010)
这个小工具在自己生活当中能用到,运行软件以后,会显示当前的系统时间,然后你可以设定时间,再选择是定时响铃还是关机。截图如下: 前言:本程序采用visual studio 2010 ,对话框类型的应用程序,生成的类视图如下,右边为CTimeDlg类的本分函数:     主要的实现方法和关键点如下: 1.
1149 0
|
Android开发 UED 数据安全/隐私保护
Android项目实战(四十二):启动页优化,去除短暂白屏或黑屏
原文:Android项目实战(四十二):启动页优化,去除短暂白屏或黑屏   大家会发现一个空项目,从手机桌面打开app是秒启动。但是对于自己开发的项目,有时会发现打开app的时候,会有短暂的1秒--2秒的白屏或者黑屏,然后才进入到程序界面。
1450 0