const AlertCtrl = require('AlertCtrl'); const LoadingCtrl = require('LoadingCtrl'); const ToastCtrl = require('ToastCtrl'); const ReconnCtrl = require('ReconnCtrl'); cc.Class({ extends: cc.Component, properties: { alertCtrl: AlertCtrl, loadingCtrl: LoadingCtrl, toastCtrl: ToastCtrl, reconnCtrl: ReconnCtrl, sceneName: '', musicName: '' }, /** * 生命周期。子类需要调用this._super() * * @author Pyden * @date 2019-03-25 */ onLoad () { if (!G.DID_GAME_INIT) { G.DID_GAME_INIT = true; // 初始化连接配置 G.NetworkMgr.initConn(); } // 播放背景音乐 G.AudioMgr.playMusic(this.musicName, true); G.AppUtils.setLastSceneName(this.sceneName); let canvasNode = cc.find('Canvas'); // 编辑器自动处理:替换Canvas、导入弹框控制器、Toast控制器 let canvasEx = canvasNode.getComponent('CanvasEx'); if (!canvasEx) { G.LogUtils.error('请务必给场景的 Canvas 替换成脚本 CanvasEx'); } if (!this.alertCtrl) { G.LogUtils.error('请务必在 Canvas 下增加 alertCtrl。预制体在:edt_prefab/ctrl/prefab_alert_ctrl'); } if (!this.loadingCtrl) { G.LogUtils.error('请务必在 Canvas 下增加 loadingCtrl。预制体在:edt_prefab/ctrl/prefab_loading_ctrl'); } if (!this.toastCtrl) { G.LogUtils.error('请务必在 Canvas 下增加 toastCtrl。预制体在:edt_prefab/ctrl/prefab_toast_ctrl'); } if (!CC_EDITOR && G.OPEN_DEBUG) { cc.loader.loadRes('edt_prefab/Debug/debug_enter', cc.Prefab, (err, prefab) => { if (err) { G.LogUtils.log('err:', err); return; } let node = cc.instantiate(prefab); node.name = 'debugCtrl'; canvasNode.addChild(node); }); } }, /** * 生命周期。子类需要调用this._super() * * @author Pyden * @date 2019-03-25 */ onEnable () { cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this._onKeyUp, this); }, /** * 生命周期。子类需要调用this._super() * * @author Pyden * @date 2019-03-25 */ onDisable () { cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this._onKeyUp, this); }, /** * 生命周期。子类需要调用this._super() * * @author Pyden * @date 2019-03-25 */ start () { }, /** * 生命周期。子类需要调用this._super() * * @author Pyden * @date 2019-03-25 */ onDestroy () { }, /** * 处理离线 * * @author libo * @date 2020-05-07 */ handleOffline () { if (this.reconnCtrl) { this.reconnCtrl.handleOffline(); } }, /** * 弹出断线重连弹窗 * * @author libo * @date 2020-05-07 */ showOfflineAlert () { if (this.reconnCtrl) { this.reconnCtrl.showOfflineAlert(); } }, /** * 显示加载进度 * * @author libo * @date 2019-06-25 */ showLoadingAlert () { this.loadingCtrl.showLoadingAlert(); }, /** * 更新加载进度 * * @author libo * @date 2019-06-25 * @param {number} completedCount 已完成加载 * @param {number} totalCount 加载总和 * @param {string} item 当前加载资源名 */ updateLoadingProgress (completedCount, totalCount, item) { this.loadingCtrl.updateLoadingProgress(completedCount, totalCount, item); }, /** * 点击场景返回 * * @author Pyden * @date 2019-03-25 */ backOnClicked () { // G.AppUtils.loadScene('scene_launch'); }, // 详见 AlertCtrl 同名函数 pushAlert (alert) { if (this.alertCtrl) { this.alertCtrl.pushAlert(alert); } }, // 详见 AlertCtrl 同名函数 popAlert (alert) { if (this.alertCtrl) { this.alertCtrl.popAlert(alert); } }, // 详见 AlertCtrl 同名函数 popAllAlert (forceClose) { if (this.alertCtrl) { this.alertCtrl.popAllAlert(forceClose); } }, // 详见 AlertCtrl 同名函数 closeAlert (alertId) { if (this.alertCtrl) { return this.alertCtrl.closeAlert(alertId); } }, // 详见 AlertCtrl 同名函数 getAlert (alertId) { if (this.alertCtrl) { return this.alertCtrl.getAlert(alertId); } return undefined; }, // 详见 AlertCtrl 同名函数 getAlertCount () { if (this.alertCtrl) { return this.alertCtrl.getAlertCount(); } return 0; }, // 详见 AlertCtrl 同名函数 showNormalAlert (alertId, userdata, cb) { if (this.alertCtrl) { this.alertCtrl.showNormalAlert(alertId, userdata, cb); } }, // 详见 AlertCtrl 同名函数 showAlert (prefabPath, alertData, cb) { if (this.alertCtrl) { this.alertCtrl.showAlert(prefabPath, alertData, cb); } }, // 详见 ToastCtrl 同名函数 addToast (msg, holdTime, cb) { if (this.toastCtrl) { this.toastCtrl.addToast(msg, holdTime, cb); } }, // 详见 ToastCtrl 同名函数 debugToast (msg, holdTime) { if (!G.OPEN_DEBUG) { return; } let isOpen = G.DebugMgr.getValue(JMC.DEBUG_KEY.DEBUG_TOAST); if (!isOpen) { return; } this.addToast(msg, holdTime); }, // ---------------- 私有方法分割线 ---------------- /** * 键盘点击 * * @author Pyden * @date 2019-03-25 * @param {cc.Event} event */ _onKeyUp (event) { if (event.keyCode === cc.macro.KEY.escape || event.keyCode === cc.macro.KEY.back) { this._backKeyOnClicked(); } }, /** * 返回键被点击 * * @author Pyden * @date 2019-03-25 */ _backKeyOnClicked () { if (this.loadingCtrl) { let ok = this.loadingCtrl.backKeyOnClicked(); if (ok) { return; } } if (this.alertCtrl) { let ok = this.alertCtrl.backKeyOnClicked(); if (ok) { return; } } this.backOnClicked(); }, });