/** * 界面相关的工具 */ module.exports = { _sceneInitParams: undefined, _lastSceneName: undefined, getSceneCtrl () { return cc.director.getScene().getChildByName('ctrl').getComponent('SceneCtrlBase'); }, /** * 进入指定场景(显示load进度) * * @author Pyden * @date 2019-05-05 * @param {String} sceneName 场景名称 * @param {Any} paAlertCtrlrams 场景初始化的参数 */ loadScene (sceneName, params) { G.LogUtils.warn('loadScene', sceneName); this._sceneInitParams = params; G.AppUtils.getSceneCtrl().showLoadingAlert(); let temp = undefined; cc.director.preloadScene(sceneName, (completedCount, totalCount, item)=>{ temp = this.getLoadProgressInfo(temp, completedCount, totalCount); this.getSceneCtrl().updateLoadingProgress(temp.precent * 100, 100, item); }, (error, asset) => { if (error) { G.AppUtils.getSceneCtrl().addToast('网络异常!'); } else { // 加载完毕 cc.director.loadScene(sceneName); } }); }, /** * 进入指定场景(不显示load进度) * * @author libo * @date 2019-06-17 * @param {String} sceneName 场景名称 * @param {Any} params 场景初始化的参数 */ runScene (sceneName, params) { this._sceneInitParams = params; cc.director.loadScene(sceneName); }, /** * 获取加载进度信息 * * @author Pyden * @date 2019-08-27 * @param {Map} tempInfo * @param {Integer} completedCount * @param {Integer} totalCount * @returns {Map} */ getLoadProgressInfo (tempInfo, completedCount, totalCount) { if (!tempInfo) { tempInfo = { precent: 0, realPrecent: 0, completedCount: 0, totalCount: 0, lastPrecent: 0, lastCompletedCount: 0, tickTimes: 0 }; } tempInfo.tickTimes = tempInfo.tickTimes + 1; let tickPrecent = Math.min(tempInfo.tickTimes / 100, 0.4); if (totalCount == 0) { tempInfo.precent = tickPrecent; return tempInfo; } if (totalCount == completedCount) { tempInfo.precent = 1; return tempInfo; } if (totalCount > tempInfo.totalCount) { tempInfo.lastCompletedCount = tempInfo.completedCount; tempInfo.lastPrecent = tempInfo.realPrecent; } // tempInfo.lastPrecent变更后,每个文件累加的进度值 let pie = (1 - tempInfo.lastPrecent) / (totalCount - tempInfo.lastCompletedCount); tempInfo.realPrecent = tempInfo.lastPrecent + (completedCount - tempInfo.lastCompletedCount) * pie; tempInfo.completedCount = completedCount; tempInfo.totalCount = totalCount; tempInfo.precent = Math.max(tempInfo.realPrecent, tickPrecent); return tempInfo; }, /** * 获取场景初始化的参数 * * @author Pyden * @date 2019-05-05 * @returns {Any} */ getSceneInitParams () { return this._sceneInitParams; }, /** * 获取最后的场景名称 * * @author Pyden * @date 2019-07-17 * @returns {String} */ getLastSceneName () { return this._lastSceneName; }, /** * 获取最后的场景名称 * * @author Pyden * @date 2019-07-17 * @param {String} value */ setLastSceneName (value) { this._lastSceneName = value; }, /** * 将左下角为原点的坐标转化为中心点为原点的坐标 * * @author libo * @date 2019-04-09 * @param {cc.v2} pos * @returns */ convertLeftHandToUiPos (pos) { return cc.v2(pos.x - (cc.view.getVisibleSize().width / 2), pos.y - (cc.view.getVisibleSize().height / 2)); }, /** * 暂停游戏 * * @author libo * @date 2019-08-07 */ pauseGame () { cc.audioEngine.pauseAllEffects(); cc.audioEngine.pauseMusic(); // 暂停游戏停止心跳同步 G.LoginMgr._stopKeepalive(); cc.game.pause(); }, /** * 恢复游戏 * * @author libo * @date 2019-08-07 */ resumeGame () { let effect = G.SettingMgr.getSettingStatusByType(JMC.LS_KEY.SETTING_SOUND); let music = G.SettingMgr.getSettingStatusByType(JMC.LS_KEY.SETTING_MUSIC); if (effect) { cc.audioEngine.resumeAllEffects(); } if (music) { cc.audioEngine.resumeMusic(); } cc.game.resume(); G.AudioMgr.playMusic(G.AppUtils.getSceneCtrl().musicName, true); // 恢复游戏恢复心跳同步 G.LoginMgr._startKeepalive(); } };