策划想做一个倒计时功能例如: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); },原文链接:https://www.f2er.com/cocos2dx/338987.html