123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- import GameController from "../script/GameController";
- import AssetMgr from "../script/utils/AssetMgr";
- // 不允许在这个脚本中引用其他文件
- const { ccclass, menu, property } = cc._decorator;
- @ccclass
- @menu("UI/scene/UISplash")
- export default class UISplash extends cc.Component {
- @property(cc.Label)
- txtVersion: cc.Label = null
- @property(cc.Label)
- txtTips: cc.Label = null
- @property(cc.Node)
- bg1: cc.Node = null
- @property(cc.Node)
- bg2: cc.Node = null
- onLoad() {
- cc.game.clear()
- cc.debug.setDisplayStats(false)
- //开启强制合批
- cc.macro.CLEANUP_IMAGE_CACHE = true;
- cc.dynamicAtlasManager.enabled = false;
- window["fps"] = () => {
- cc.debug.setDisplayStats(!cc.debug.isDisplayStats())
- if (cc.debug.isDisplayStats()) {
- setTimeout(() => {
- if (cc.find('PROFILER-NODE')) {
- cc.find('PROFILER-NODE').scale = 2;
- }
- }, 200);
- }
- }
- //更新新版本,删除旧缓存
- if (cc.sys.platform == cc.sys.WECHAT_GAME) {
- //小游戏平台删除过期缓存,防止缓存超过50M
- // cc.assetManager.cacheManager.clearLRU()
- cc.assetManager.cacheManager.autoClear = true
- }
- }
- protected start(): void {
- //电魂sdk漏斗打点
- if (window['dhSDK']) {
- // 事件ID
- let eventId = "110001::GAME_CLIENT_SDK_ACTIVATE"; // 表示SDK客户端上报的启动事件
- // 事件参数
- let eventParams = {};
- // 必填参数
- eventParams["logLevel"] = "d";
- eventParams["logContent"] = "游戏首包加载结束";
- // 执行上报
- window['dhSDK'].trackEvent(eventId, eventParams);
- }
- //电魂sdk漏斗打点
- if (window['dhSDK']) {
- // 事件ID
- let eventId = "110000::GAME_CLIENT_LAUNCH"; // 表示SDK客户端上报的启动事件
- // 事件参数
- let eventParams = {};
- // 必填参数
- eventParams["logLevel"] = "d";
- eventParams["logContent"] = "SDK启动";
- // 执行上报
- window['dhSDK'].trackEvent(eventId, eventParams);
- }
- if (!cc.Node.prototype["clickChange"]) {
- let prototype = cc.Node.prototype;
- let dispatchEvent = prototype.dispatchEvent;
- prototype.dispatchEvent = function (event) {
- try {
- if (event.type == cc.Node.EventType.TOUCH_END) {
- cc.game.emit("GameEvent.ON_CLICK", event)
- }
- dispatchEvent.bind(this)(event);
- } catch (error) {
- console.error("按钮报错", "", "", error.message, error.stack)
- if (window["sendClientErr"]) {
- window["sendClientErr"]([error.message.substring(0, 200), error.stack.substring(0, 400)])
- }
- }
- }
- cc.Node.prototype["clickChange"] = true;
- }
- // 游戏速率变量
- cc.director["_kSpeed"] = 1;
- var _originCalculateDeltaTime = cc.Director.prototype["calculateDeltaTime"];
- cc.director["calculateDeltaTime"] = function (now) {
- _originCalculateDeltaTime.call(this, now);
- this._deltaTime *= this._kSpeed;
- }
- //设置速率
- // cc.director.setSpeed = function (speed) {
- // cc.director["_kSpeed"] = speed;
- // }
- console.log("===脚本分包加载开始")
- let time = new Date().getTime()
- // cc.assetManager
- this.txtTips.string = "正在加载本地资源..."
- cc.assetManager.loadBundle("scriptAsset", (err, bundle) => {
- if (err) {
- console.error(`load scriptAsset ${0} err:${1}`, bundle, err)
- return
- }
- console.log("===脚本分包加载完成", new Date().getTime() - time)
- this.txtTips.string = "正在加载配置..."
- import("RemoteConfig" as any).then((remoteParam) => {
- let remoteConfig = remoteParam.default
- import("GameController" as any).then((gameCtrlParam) => {
- let gameController = gameCtrlParam.default
- import("Config" as any).then((cfgParam) => {
- let config = cfgParam.default
- // pad
- config.isPad = cc.winSize.width / cc.winSize.height > (750 / 1334)
- // 显示版本号
- this.txtVersion.node.active = true
- this.txtVersion.string = "版本号:" + config.appVersion
- this.txtTips.string = "游戏初始化中(50%)..."
- remoteConfig.init(() => {
- this.txtTips.string = "游戏初始化中(80%)..."
- //电魂sdk漏斗打点
- if (window['dhSDK']) {
- // 事件ID
- let eventId = "100102::GAME_CREATE_VERSION_SUCCESS"; // 表示SDK客户端上报的启动事件
- // 事件参数
- let eventParams = {};
- // 必填参数
- eventParams["logLevel"] = "d";
- eventParams["logContent"] = "检查版本结束";
- // 执行上报
- window['dhSDK'].trackEvent(eventId, eventParams);
- }
- //电魂sdk漏斗打点
- if (window['dhSDK']) {
- // 事件ID
- let eventId = "211000::GAME_CLIENT_INIT_START"; // 表示SDK客户端上报的启动事件
- // 事件参数
- let eventParams = {};
- // 必填参数
- eventParams["logLevel"] = "d";
- eventParams["logContent"] = "游戏资源包加载进度条开始";
- // 执行上报
- window['dhSDK'].trackEvent(eventId, eventParams);
- }
- gameController.init((isSucc: boolean) => {
- if (isSucc) {
- //电魂sdk漏斗打点
- if (window['dhSDK']) {
- // 事件ID
- let eventId = "211001::GAME_CLIENT_INIT_END"; // 表示SDK客户端上报的启动事件
- // 事件参数
- let eventParams = {};
- // 必填参数
- eventParams["logLevel"] = "d";
- eventParams["logContent"] = "游戏资源包加载进度条结束";
- // 执行上报
- window['dhSDK'].trackEvent(eventId, eventParams);
- }
- this.txtTips.string = "游戏初始化中(100%)..."
- // 计算屏幕宽度, 考虑刘海屏
- config.safeAreaRect = cc.sys.getSafeAreaRect()
- // //是否是电脑端微信
- // let isWinByWx = false
- // if (cc.sys.platform == cc.sys.WECHAT_GAME) {
- // let sysInfo = wx.getSystemInfoSync();
- // if (sysInfo?.platform == "windows" || sysInfo?.platform == "mac") {
- // isWinByWx = true
- // }
- // }
- if (config.safeAreaRect.y == 0 && cc.winSize.width / cc.winSize.height < 0.5) {
- //识别不到安全区域的设备,强制预留
- config.safeAreaRect.y = 50
- }
- console.log("安全区域:", config.safeAreaRect.x, config.safeAreaRect.y, config.safeAreaRect.width, config.safeAreaRect.height)
- let perY = config.safeAreaRect.y / (config.safeAreaRect.height)
- console.log("屏幕宽高:", cc.winSize.width, cc.winSize.height)
- let realSafeY = config.safeAreaRect.y;//perY * cc.winSize.height //config.safeAreaRect.y
- console.log("占用百分比:", perY, "真实安全区域像素x:", realSafeY)
- config.realHeight = cc.winSize.height - Math.abs(realSafeY) * 1.5
- console.log("最终高度:", config.realHeight)
- if (cc.sys.isNative && (cc.sys.platform == cc.sys.ANDROID || cc.sys.platform == cc.sys.IPHONE || cc.sys.platform == cc.sys.IPAD)) {
- //等待检测更新后再切换场景
- let hotUpdateCom = this.node.getComponent("HotUpdate")
- hotUpdateCom.checkUpdate()
- } else {
- // 加载资源
- cc.director.loadScene("loading")
- }
- }
- });
- })
- // 设置游戏主循环刷新帧率
- cc.game.setFrameRate(config.GAME_FRAME)
- // 设置动画间隔
- // cc.director.setAnimationInterval(1000 / config.GAME_FRAME)
- })
- })
- })
- })
- }
- }
|