Files
fc/dev/project/library/imports/e9/e909877a-fbfb-40af-aad3-b314bb391247.js
T
2026-05-24 10:21:26 +08:00

220 lines
6.1 KiB
JavaScript

"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();