(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/script/mk/system/TimerSystem.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { return __quick_compile_project__.require(request, __filename); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; cc._RF.push(module, '70a463CEglFy49OGQWrGdoc', 'TimerSystem'); // script/mk/system/TimerSystem.ts "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.Timer = void 0; /** * 计时器管理类 * @description * @author 冯聪 */ var TimerSystem = /** @class */ (function (_super) { __extends(TimerSystem, _super); function TimerSystem() { var _this = _super !== null && _super.apply(this, arguments) || this; /** 计数器数组 */ _this.timerArr = []; return _this; } /** 开启游戏计时器 */ TimerSystem.prototype.startTimer = function () { var _this = this; this.schedule(function () { _this.runTimer(); }, 1); }; /** 运行游戏计时器 */ TimerSystem.prototype.runTimer = function () { for (var i = 0; i < this.timerArr.length; i++) { var gameTimer = this.timerArr[i]; var callBack = gameTimer.callBack; var target = gameTimer.target; gameTimer.curTime--; if (gameTimer.curTime <= 0) { gameTimer.curTime = gameTimer.totalTime; callBack.call(target); } } }; /** * 添加游戏计时器 * @description * @param time 计时的时间 * @param callBack 计时结束之后的回调 * @param target 计时绑定的脚本对象 */ TimerSystem.prototype.addTimer = function (time, callBack, target) { if (!this.ifHasSameTimer(callBack, target)) { var gameTimer = new Timer(); gameTimer.curTime = time; gameTimer.totalTime = time; gameTimer.callBack = callBack; gameTimer.target = target; this.timerArr.push(gameTimer); } }; /** * 是否有相同的时间管理器 * @param callBack 回调方法 * @param target 绑定的对象 */ TimerSystem.prototype.ifHasSameTimer = function (callBack, target) { if (this.getTimer(callBack, target)) { //重复添加时间计时器 return true; } else { return false; } }; /** * 获取时间管理器 * @param callBack 回调方法 * @param target 绑定的对象 */ TimerSystem.prototype.getTimer = function (callBack, target) { for (var i = this.timerArr.length - 1; i >= 0; i--) { var gameTimer = this.timerArr[i]; if (gameTimer.callBack == callBack && gameTimer.target == target) { return gameTimer; } } return null; }; /** * 移除时间管理器 * @param callBack 回调方法 * @param target 绑定的对象 */ TimerSystem.prototype.removeTimer = function (callBack, target) { for (var i = this.timerArr.length - 1; i >= 0; i--) { var timer = this.timerArr[i]; if (timer.callBack == callBack && timer.target == target) { this.timerArr.splice(i, 1); //gameTimer = null; //要不要加null 看最后的效果 return; } } }; return TimerSystem; }(cc.Component)); exports.default = TimerSystem; /** 游戏计时器类 */ var Timer = /** @class */ (function () { function Timer() { /** 当前计时时间 */ this.curTime = 0; /** 计时总时间 */ this.totalTime = 0; /** 计时的回调 */ this.callBack = null; /** 绑定的脚本对象 */ this.target = null; } return Timer; }()); exports.Timer = Timer; cc._RF.pop(); } if (nodeEnv) { __define(__module.exports, __require, __module); } else { __quick_compile_project__.registerModuleFunc(__filename, function () { __define(__module.exports, __require, __module); }); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0XFxta1xcc3lzdGVtXFxUaW1lclN5c3RlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7R0FJRztBQUNIO0lBQXlDLCtCQUFZO0lBQXJEO1FBQUEscUVBeUZDO1FBdkZHLFlBQVk7UUFDSixjQUFRLEdBQVksRUFBRSxDQUFDOztJQXNGbkMsQ0FBQztJQXBGRyxjQUFjO0lBQ1AsZ0NBQVUsR0FBakI7UUFBQSxpQkFJQztRQUhHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDVixLQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELGNBQWM7SUFDTiw4QkFBUSxHQUFoQjtRQUNJLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuRCxJQUFJLFNBQVMsR0FBVSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksUUFBUSxHQUFhLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDNUMsSUFBSSxNQUFNLEdBQVEsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNuQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsSUFBSSxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRTtnQkFDeEIsU0FBUyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO2dCQUN4QyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3pCO1NBQ0o7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksOEJBQVEsR0FBZixVQUFnQixJQUFZLEVBQUUsUUFBa0IsRUFBRSxNQUFXO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUN4QyxJQUFJLFNBQVMsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQzlCLFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxvQ0FBYyxHQUF0QixVQUF1QixRQUFrQixFQUFFLE1BQVc7UUFDbEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtZQUNqQyxXQUFXO1lBQ1gsT0FBTyxJQUFJLENBQUM7U0FDZjthQUNJO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLDhCQUFRLEdBQWhCLFVBQWlCLFFBQWtCLEVBQUUsTUFBVztRQUM1QyxLQUFLLElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hELElBQUksU0FBUyxHQUFVLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxTQUFTLENBQUMsUUFBUSxJQUFJLFFBQVEsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLE1BQU0sRUFBRTtnQkFDOUQsT0FBTyxTQUFTLENBQUM7YUFDcEI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUNBQVcsR0FBbEIsVUFBbUIsUUFBa0IsRUFBRSxNQUFXO1FBQzlDLEtBQUssSUFBSSxDQUFDLEdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxLQUFLLEdBQVUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFFO2dCQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7Z0JBQzFCLHFDQUFxQztnQkFDckMsT0FBTzthQUNWO1NBQ0o7SUFDTCxDQUFDO0lBQ0wsa0JBQUM7QUFBRCxDQXpGQSxBQXlGQyxDQXpGd0MsRUFBRSxDQUFDLFNBQVMsR0F5RnBEOztBQUVELGFBQWE7QUFDYjtJQUFBO1FBQ0ksYUFBYTtRQUNiLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsWUFBWTtRQUNaLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIsWUFBWTtRQUNaLGFBQVEsR0FBYSxJQUFJLENBQUM7UUFDMUIsY0FBYztRQUNkLFdBQU0sR0FBUSxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUFELFlBQUM7QUFBRCxDQVRBLEFBU0MsSUFBQTtBQVRZLHNCQUFLIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKlxyXG4gKiDorqHml7blmajnrqHnkIbnsbsgXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiBAYXV0aG9yIOWGr+iBqiBcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRpbWVyU3lzdGVtIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvKiog6K6h5pWw5Zmo5pWw57uEICovXHJcbiAgICBwcml2YXRlIHRpbWVyQXJyOiBUaW1lcltdID0gW107XHJcblxyXG4gICAgLyoqIOW8gOWQr+a4uOaIj+iuoeaXtuWZqCAqL1xyXG4gICAgcHVibGljIHN0YXJ0VGltZXIoKSB7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucnVuVGltZXIoKTtcclxuICAgICAgICB9LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiog6L+Q6KGM5ri45oiP6K6h5pe25ZmoICovXHJcbiAgICBwcml2YXRlIHJ1blRpbWVyKCkge1xyXG4gICAgICAgIGZvciAodmFyIGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLnRpbWVyQXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBnYW1lVGltZXI6IFRpbWVyID0gdGhpcy50aW1lckFycltpXTtcclxuICAgICAgICAgICAgdmFyIGNhbGxCYWNrOiBGdW5jdGlvbiA9IGdhbWVUaW1lci5jYWxsQmFjaztcclxuICAgICAgICAgICAgdmFyIHRhcmdldDogYW55ID0gZ2FtZVRpbWVyLnRhcmdldDtcclxuICAgICAgICAgICAgZ2FtZVRpbWVyLmN1clRpbWUtLTtcclxuICAgICAgICAgICAgaWYgKGdhbWVUaW1lci5jdXJUaW1lIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIGdhbWVUaW1lci5jdXJUaW1lID0gZ2FtZVRpbWVyLnRvdGFsVGltZTtcclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrLmNhbGwodGFyZ2V0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOa3u+WKoOa4uOaIj+iuoeaXtuWZqFxyXG4gICAgICogQGRlc2NyaXB0aW9uXHJcbiAgICAgKiBAcGFyYW0gdGltZSAgICAg6K6h5pe255qE5pe26Ze0XHJcbiAgICAgKiBAcGFyYW0gY2FsbEJhY2sg6K6h5pe257uT5p2f5LmL5ZCO55qE5Zue6LCDXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0ICAg6K6h5pe257uR5a6a55qE6ISa5pys5a+56LGhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRUaW1lcih0aW1lOiBudW1iZXIsIGNhbGxCYWNrOiBGdW5jdGlvbiwgdGFyZ2V0OiBhbnkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaWZIYXNTYW1lVGltZXIoY2FsbEJhY2ssIHRhcmdldCkpIHtcclxuICAgICAgICAgICAgbGV0IGdhbWVUaW1lciA9IG5ldyBUaW1lcigpO1xyXG4gICAgICAgICAgICBnYW1lVGltZXIuY3VyVGltZSA9IHRpbWU7XHJcbiAgICAgICAgICAgIGdhbWVUaW1lci50b3RhbFRpbWUgPSB0aW1lO1xyXG4gICAgICAgICAgICBnYW1lVGltZXIuY2FsbEJhY2sgPSBjYWxsQmFjaztcclxuICAgICAgICAgICAgZ2FtZVRpbWVyLnRhcmdldCA9IHRhcmdldDtcclxuICAgICAgICAgICAgdGhpcy50aW1lckFyci5wdXNoKGdhbWVUaW1lcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5piv5ZCm5pyJ55u45ZCM55qE5pe26Ze0566h55CG5ZmoXHJcbiAgICAgKiBAcGFyYW0gY2FsbEJhY2sg5Zue6LCD5pa55rOVXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0ICAg57uR5a6a55qE5a+56LGhXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaWZIYXNTYW1lVGltZXIoY2FsbEJhY2s6IEZ1bmN0aW9uLCB0YXJnZXQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmdldFRpbWVyKGNhbGxCYWNrLCB0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIC8v6YeN5aSN5re75Yqg5pe26Ze06K6h5pe25ZmoXHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogXHJcbiAgICAgKiDojrflj5bml7bpl7TnrqHnkIblmahcclxuICAgICAqIEBwYXJhbSBjYWxsQmFjayDlm57osIPmlrnms5VcclxuICAgICAqIEBwYXJhbSB0YXJnZXQgICDnu5HlrprnmoTlr7nosaFcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRUaW1lcihjYWxsQmFjazogRnVuY3Rpb24sIHRhcmdldDogYW55KTogVGltZXIge1xyXG4gICAgICAgIGZvciAodmFyIGk6IG51bWJlciA9IHRoaXMudGltZXJBcnIubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgbGV0IGdhbWVUaW1lcjogVGltZXIgPSB0aGlzLnRpbWVyQXJyW2ldO1xyXG4gICAgICAgICAgICBpZiAoZ2FtZVRpbWVyLmNhbGxCYWNrID09IGNhbGxCYWNrICYmIGdhbWVUaW1lci50YXJnZXQgPT0gdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2FtZVRpbWVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog56e76Zmk5pe26Ze0566h55CG5ZmoXHJcbiAgICAgKiBAcGFyYW0gY2FsbEJhY2sg5Zue6LCD5pa55rOVXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0ICAg57uR5a6a55qE5a+56LGhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZW1vdmVUaW1lcihjYWxsQmFjazogRnVuY3Rpb24sIHRhcmdldDogYW55KSB7XHJcbiAgICAgICAgZm9yICh2YXIgaTogbnVtYmVyID0gdGhpcy50aW1lckFyci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICBsZXQgdGltZXI6IFRpbWVyID0gdGhpcy50aW1lckFycltpXTtcclxuICAgICAgICAgICAgaWYgKHRpbWVyLmNhbGxCYWNrID09IGNhbGxCYWNrICYmIHRpbWVyLnRhcmdldCA9PSB0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZXJBcnIuc3BsaWNlKGksIDEpXHJcbiAgICAgICAgICAgICAgICAvL2dhbWVUaW1lciA9IG51bGw7IC8v6KaB5LiN6KaB5YqgbnVsbCDnnIvmnIDlkI7nmoTmlYjmnpxcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLyoqIOa4uOaIj+iuoeaXtuWZqOexuyAqL1xyXG5leHBvcnQgY2xhc3MgVGltZXIge1xyXG4gICAgLyoqIOW9k+WJjeiuoeaXtuaXtumXtCAqL1xyXG4gICAgY3VyVGltZTogbnVtYmVyID0gMDtcclxuICAgIC8qKiDorqHml7bmgLvml7bpl7QgKi9cclxuICAgIHRvdGFsVGltZTogbnVtYmVyID0gMDtcclxuICAgIC8qKiDorqHml7bnmoTlm57osIMgKi9cclxuICAgIGNhbGxCYWNrOiBGdW5jdGlvbiA9IG51bGw7XHJcbiAgICAvKiog57uR5a6a55qE6ISa5pys5a+56LGhICovXHJcbiAgICB0YXJnZXQ6IGFueSA9IG51bGw7XHJcbn1cclxuIl19