加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-js 倒计时功能。

发布时间:2020-12-14 17:16:24 所属栏目:百科 来源:网络整理
导读:策划想做一个倒计时功能例如:05:00 首先我们先做写一个 倒计时的类。 /** * Created by zhao_et on 16/11/28. * 时间控制器 */ var CountDownTimeControl = cc.Class.extend({ m_updateTime: 1 , // 每次的更新时间 m_allTime: 10 , // 整体执行时间 m_fra

策划想做一个倒计时功能例如:05:00

首先我们先做写一个 倒计时的类。

/**  * Created by zhao_et on 16/11/28.  * 时间控制器  */ var CountDownTimeControl = cc.Class.extend({

    m_updateTime: 1,// 每次的更新时间  m_allTime: 10,// 整体执行时间  m_frameCallBack: null,// 每帧回调  m_overCallBack: null,// 整体执行完毕回调   ctor: function (updateTime,allTime,frameCallBack,overCallBack) {
        this.init(updateTime,overCallBack);
    },init: function (updateTime,overCallBack) {
        this.m_updateTime = updateTime || 1;
        this.m_allTime = allTime || 10;
        this.m_frameCallBack = frameCallBack || null;
        this.m_overCallBack = overCallBack || null;
    },// 设置每次更新时间  setUpdateTime: function (time) {
        this.m_updateTime = time;
    },// 设置总体执行时间  setAllTime: function (time) {
        this.m_allTime = time;
    },// 设置每帧回调  setFrameCallBack: function (callBack) {
        this.m_frameCallBack = callBack;
    },// 设置整体执行完毕回调  setOverCallBack: function (callBack) {
        this.m_overCallBack = callBack;
    },// 开启倒计时  startCountDownTime: function () {
        cc.director.getScheduler().schedule(this,this.updateCountDownTime,this.m_updateTime,cc.REPEAT_FOREVER,0,false,"keyCountDownTime");
    },// 每帧更新  updateCountDownTime: function () {
        this.m_allTime -= this.m_updateTime;
        if(this.m_frameCallBack) this.m_frameCallBack(this.m_allTime);

        if(this.m_allTime == 0 && this.m_overCallBack) {
            this.stopUpdateCountDownTime();
            this.m_overCallBack();
        }
    },// 停止倒计时  stopUpdateCountDownTime: function () {
        cc.director.getScheduler().unschedule(this,this.updateCountDownTime);
    },// 清空  cleanUp: function ( ) {
        this.stopUpdateCountDownTime();
        this.m_updateTime = null;
        this.m_allTime = null;
        this.m_frameCallBack = null;
        this.m_overCallBack = null;
    }
});

在有了倒计时之后我们 转换赋值。

// 战斗中倒计时功能 initBattleCoundDownLabel: function () {
    var _self = this;
    var battleTime = UserInfoManager.getInstance().getBattleTime() / 1000;

  
    var frameCallBack = function (allTime) {
        _self.setTimeStringBySecond(allTime);
        cc.log("alltime: " + allTime);
    };

    var overCallBack = function () {
        cc.log("overCallBack: ");
    };

    this.m_battleTimeCountDownTime.setUpdateTime(1); // 倒计时更新时间
    this.m_battleTimeCountDownTime.setAllTime(battleTime); // 倒计时总时间
    this.m_battleTimeCountDownTime.setFrameCallBack(frameCallBack); // 倒计时帧回调
    this.m_battleTimeCountDownTime.setOverCallBack(overCallBack); // 倒计时结束回调
    this.m_battleTimeCountDownTime.startCountDownTime();

    this.setTimeStringBySecond(battleTime);
},// 通过描述获取时间 setTimeStringBySecond: function (second) {
    var minute = 0 | (second / 60);
    var second = parseInt(second % 60); // 防止出现小数
    minute = minute > 9 ? minute : "0" + minute;
    second = second > 9 ? second : "0" + second;

    var timeStr = minute + ":" + second;
    this["m_battleTime"].setString(timeStr);
},

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读