123 lines
4.0 KiB
JavaScript
Raw Normal View History

2025-04-24 17:03:28 +08:00
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();
}
},
},
});