"use strict"; cc._RF.push(module, 'e9098d6+/tAr6rTsxS7ORJH', 'nx.frame'); // Scripts/nx/kernel/nx.frame.js "use strict"; /******************************************************************************* * * Nx框架 * * 产生全局服务入口window.nx * * 2021.12.10 ******************************************************************************/ var ERR = require("error"); var NxDefine = require("nx.define"); var NxMod = require("nx.mod"); var NxEntry = cc.Class({ "extends": NxMod, name: "NxEntry", // 初始化 initialize: function initialize(_args) { // 初始化 if (!this._super(_args)) { cc.error("初始化NX框架失败!"); return false; } nx.frame = this; // 系统初始化 this._initSystemVars(); this.initGameSpeed(); // 模块载入 nx.factory.createService("nx.gui"); nx.factory.createService("nx.res"); nx.factory.createService("nx.tween"); nx.factory.createService("nx.storage"); nx.factory.createService("nx.assets"); nx.factory.createService("nx.event"); nx.factory.createService("nx.misc"); nx.factory.createService("nx.text"); nx.factory.createService("nx.view.mgr"); nx.factory.createService("nx.plugin.manager"); // 视图创建 nx.plugin.add(this, ["view"]); this.vbuild(NxDefine.ViewFrame); // nx.factory.createService( "nx.cmd.manager" ); nx.factory.createService("nx.funs"); nx.factory.createService("nx.audio"); nx.factory.createService("nx.timers"); nx.factory.createService("nx.web.gate"); nx.factory.createService("nx.jsr"); // nx.factory.createService( "nxJsb" ); // SDK实例化 this.initSDK(); // 视图参数初始化 this._initViewData(); // 通用命令注册 this.instCmds(); return true; }, // 销毁 uninitialize: function uninitialize() { // 通用命令注销 this.uninstCmds(); // 窗体尺寸变化监听解除 cc.view.setResizeCallback(null); nx.frame = null; // USPER return this._super(); }, // 系统初始化 _initSystemVars: function _initSystemVars() { // 设备初始化 // cc.game.setFrameRate( CFG.FPS ); // cc.game.showFPS = false; }, // 视图参数初始化 _initViewData: function _initViewData() { // 窗体尺寸变化监听 cc.view.setResizeCallback(this._freshFrameSize.bind(this)); this._freshFrameSize(); }, // 刷新窗体尺寸 _freshFrameSize: function _freshFrameSize() { var fs = cc.view.getFrameSize(); var ds = cc.view.getDesignResolutionSize(); this.vset("IsLandscape", ds.width >= ds.height); var hfr = fs.height / fs.width; var hdr = ds.height / ds.width; this.vset("HeightRate", hdr / hfr); // 最大宽高比 // 主要用于背景图等比填充 this.vset("DesignWHRate", ds.width / ds.height); this.vset("RuntimeWHRate", fs.width / fs.height); this.vset("MaxWHRate", 1560 / 720); }, /*** * ********************************************************************* * 命令相关 * ********************************************************************* */ // 通用命令安装 instCmds: function instCmds() { if (!nx.cmd) { return; } // // 创建窗口 // nx.cmd.regCmd( "open_window", ( _cb, _name, _p1, _p2 ) => { // nx.createWindow( _name, ( _e, _p ) => { // nx.dt.fnInvoke( _cb, _e, _p ); // }, { p1: _p1, p2: _p2 } ); // }, "创建指定窗口 [窗体名][参数1][参数2]" ); // // 关闭窗口 // nx.cmd.regCmd( "close_window", ( _cb, _name ) => { // nx.closeWindow( _name ); // nx.dt.fnInvoke( _cb ); // }, "关闭指定窗口 [窗体名]" ); // 发送消息 nx.cmd.regCmd("send_event", function (_cb, _event, _p1, _p2) { var ret = nx.event.send(_event, { p1: _p1, p2: _p2 }); nx.dt.fnInvoke(_cb, ret ? null : nx.genError(ERR.COM.InvalidEvent)); }, "发送消息 [事件名][参数1][参数2]"); }, // 通用命令卸载 uninstCmds: function uninstCmds() { if (nx.cmd) { // nx.cmd.unregCmd( "open_window" ); // nx.cmd.unregCmd( "close_window" ); nx.cmd.unregCmd("send_event"); } }, /*** * ********************************************************************* * SDK相关 * ********************************************************************* */ // SDK实例化 initSDK: function initSDK() { // 根据当前平台创建SDK接口 var sdk = "nx.sdk.web"; if (cc.sys.isNative) { switch (cc.sys.os) { case cc.sys.OS_IOS: sdk = "nx.sdk.ios"; break; // case cc.sys.OS_OSX: sdk = "nx.sdk.ios"; break; case cc.sys.OS_ANDROID: sdk = "nx.sdk.android"; break; default: break; } } nx.info("[SDK系统]" + cc.sys.os + ",[当前SDK]" + sdk); nx.sdk = nx.factory.createService(sdk); }, /*** * ********************************************************************* * 游戏加速 * ********************************************************************* */ // 游戏加速初始化 initGameSpeed: function initGameSpeed() { if (!this.gspeed) { this.setGameSpeed(1); } // Director方法覆盖 cc.Director.prototype.calculateDeltaTime = function (now) { if (!now) now = performance.now(); // avoid delta time from being negative // negative deltaTime would be caused by the precision of now's value, for details please see: https://developer.mozilla.org/zh-CN/docs/Web/API/window/requestAnimationFrame this._deltaTime = now > this._lastUpdate ? (now - this._lastUpdate) / 1000 : 0; if (CC_DEBUG && this._deltaTime > 1) { this._deltaTime = 1 / 60.0; } if (window.nx && nx.frame) { this._deltaTime *= nx.frame.gspeed; } this._lastUpdate = now; }; }, // 设置速度 setGameSpeed: function setGameSpeed(_speed) { this.gspeed = Math.max(1, _speed); }, // 获取速度 getGameSpeed: function getGameSpeed() { return this.gspeed; } }); module.exports = NxEntry; cc._RF.pop();