计时器(CocosCreator)

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

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

cc.repeatForever();
AI 代码解读

      对于这个方法的解释是:永远地重复一个动作,有限次数内重复一个动作请使用 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)));
    },
AI 代码解读

      上面的方法其实就是通过顺序执行一系列事情(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 + "分") : "");
    },
AI 代码解读

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

目录
打赏
0
0
0
0
6
分享
相关文章
实现计时器和倒计时工具(Unity3D)
今天分享一下如何基于Unity3D做计时器工具,为了方便演示,使用了UGUI的Text,代码简单具有拓展性,然后有什么错误或者意见也欢迎大家给我提出来。微信二维码已经显示在博客主页,有想要沟通学习的,项目外包的都可以加一下。 分享一下我另一篇关于时间计时的文章: 【Unity3D】获取到游戏时间,并显示出来
Unity中的定时器与延时器
JavaScript中的定时器与延时器,分别是 setInterval、setTimeout,对应的清理函数是:clearInterval、clearTimeout。 而在Unity中,则分别是:Invoke、InvokeRepeating和取消延迟调用  CancelInvoke   延迟调用 v...
1366 0
Qt | 定时器实现动画效果时卡住了
Qt通过使用定时器定时切换图片实现动画效果遇到的卡顿问题。
1094 0
Unity 计时器 定时器
在网上找了一些资料,自己修改了,实现比较简单,要求精度不是很高的用这个没有问题 效果如下: 代码如下: using UnityEngine; using System.
1051 0
安卓开发_计时器(Chronometer)的简单使用
计时器控件(Chronometer)是一个可以显示从某个起始时间开始一共过去多长时间的本文。 继承自TextView,以文本的形式显示时间内容 该组件有五个方法 1、setBase(): \\用于设置计时器的起始时间 2、setFormat():\\用于设置显示时间的格式 3、start(...
947 0
Flutter 135: 图解 Timer & ACETimerButton 自定义计时器按钮
0 基础学习 Flutter,第一百三十五步:简单自定义 ACETimerButton 倒计时按钮!
430 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等