import GameUtil from "../ts/core/GameUtil"; import SKSocket from "../ts/gear_2.3.4/net/SKSocket"; let noticeNormalName = 'SysNotice'; let NoticeBox = cc.Class({ extends: cc.Component, properties: { }, ctor() { this.pfab = null; }, statics: { init: function () { var self = this; cc.loader.loadRes("Prefabs/Notice", function (error, prefab) { if (error) { cc.error(`$錯誤:加載Notice預製體失敗`); return; } self.pfab = prefab; }); }, addMsg: function (type, msg, okfunc, cancelfunc) { if (!msg) { return; } if (typeof msg == "number") { if (msg == 100006) { let code = SKSocket.shared.lastCode; msg = `連接服務器失敗,請重新登錄!錯誤碼[${code}]`; } else { msg = GameUtil.msgText[msg]; } } if (!this.pfab) { return; } let node = cc.instantiate(this.pfab); node.name = noticeNormalName; let logic = node.getComponent('NoticeLogic'); logic.type = type; logic.msg = msg; logic.okCallback = okfunc; logic.cancelCallback = cancelfunc; node.setTimeOut = function (t) { node.runAction(cc.sequence(cc.delayTime(t), cc.removeSelf())); }; node.parent = cc.director.getScene(); return node; }, addTimeMsg: function (type, msg, okfunc, cancelfunc, time) { if (!msg) { return; } if (!this.pfab) { return; } let node = cc.instantiate(this.pfab); node.name = noticeNormalName; let logic = node.getComponent('NoticeLogic'); logic.type = type; logic.msg = msg; logic.okCallback = okfunc; logic.cancelCallback = cancelfunc; logic.overTime = time; logic.cancelBtn.getChildByName("New Label").getComponent(cc.Label).string ="取消(" + time + ")" logic.schedule(() => { if (logic) { logic.overTime-- logic.cancelBtn.getChildByName("New Label").getComponent(cc.Label).string ="取消(" + logic.overTime + ")" if(logic.overTime==-1){ node.unscheduleAllCallbacks() node.destroy() } } }, 1, time) node.parent = cc.director.getScene(); return node; }, addTimeMsg2: function (type, msg, okfunc, cancelfunc, time) { if (!msg) { return; } if (!this.pfab) { return; } let node = cc.instantiate(this.pfab); node.name = noticeNormalName; let logic = node.getComponent('NoticeLogic'); logic.type = type; logic.msg = msg; logic.okCallback = okfunc; logic.cancelCallback = cancelfunc; logic.overTime = time; logic.okBtn.getChildByName("New Label").getComponent(cc.Label).string ="確定(" + time + ")" logic.schedule(() => { if (logic) { logic.overTime-- logic.okBtn.getChildByName("New Label").getComponent(cc.Label).string ="確定(" + logic.overTime + ")" if(logic.overTime==-1){ node.unscheduleAllCallbacks() node.destroy() } } }, 1, time) node.parent = cc.director.getScene(); return node; }, removeMsg: function () { let notice = cc.director.getScene().getChildByName(noticeNormalName); if (notice) { notice.destroy(); } }, }, });