import { Component, game, macro, Node, screen, size, Size, view, WebView, _decorator } from 'cc'; import { DEBUG } from 'cc/env'; const { ccclass, property } = _decorator; @ccclass('Manager') export class Manager extends Component { //#region 外調參數 @property({ type: WebView }) public webview: WebView = null; @property({ type: Node }) public BG: Node = null; //#endregion //#region private // private _text_to_Speech: Text_to_Speech; private _isSetResize: boolean = false; //#endregion //#region Lifecycle protected onLoad(): void { if (DEBUG) { console.log("Debug"); } let self: this = this; // this._text_to_Speech = new Text_to_Speech(); window.addEventListener("message", function (e: MessageEvent): void { let data: any = e.data; let method: string = data.method; let value: any = data.value; self.Birdge(method, ...value); }, false); if (!window["Bridge"]) { window["Bridge"] = function (method: string = "", value: string = ""): void { self.Birdge(method, value); }; } let href: string = window.location.href; // let url: string = `https://karolchang.github.io/jm-expense-vue-ts/?host=${href}&ignore=${Date.now()}`; // let url: string = `http://220.134.195.1/public/bonus_casino/html5/jianmiau/BJ_Casino_Rank/?v=${Date.now()}`; // let url: string = `http://karol.jianmiau.cf/jm-expense-vue-ts/?v=${Date.now()}`; let url: string = `https://jm-expense-2022.firebaseapp.com/login?v=${Date.now()}`; this.webview.url = url; // this.webview.url = `http://localhost:8080/jm-expense-vue-ts/?host=${href}&ignore=${Date.now()}`; this.webview.node.active = true; view.setResizeCallback(this._resize.bind(this)); this._resize(); } /** 跨版本溝通 * @example * CallParent('Speak', '我愛豬涵') */ public Birdge(method: string, value: string = ""): void { let self: this = this; if (method && self[method]) { if (value) { self[method](value); return; } else if (self[method]) { self[method](); return; } } console.log(`not function: ${method}, value: ${value}`); } public CloseBG(): void { if (this.BG) { this.BG.destroy(); } } public Log(msg: string): void { console.log(msg); } public Speak(msg: string): void { // this._text_to_Speech.speak(msg); } public Alert(msg: string): void { alert(msg); } private _resize(): void { if (this._isSetResize) { return; } this._isSetResize = true; let rect: DOMRect = game.canvas.getBoundingClientRect(); /** 判断是否是横屏 */ let landscape: boolean = false; if (rect.width > rect.height) { landscape = true; } // 根据横竖屏调整节点的位置适配等 let frameSize: Size = screen.windowSize; if (landscape) { // 横屏 view.setOrientation(macro.ORIENTATION_LANDSCAPE); if (frameSize.height > frameSize.width) { view.setFrameSize(frameSize.height, frameSize.width); screen.windowSize = size(frameSize.height, frameSize.width); } view.setDesignResolutionSize(1920, 1080, view.getResolutionPolicy()); } else { // 竖屏 view.setOrientation(macro.ORIENTATION_PORTRAIT); if (frameSize.width > frameSize.height) { // view.setFrameSize(frameSize.height, frameSize.width); screen.windowSize = size(frameSize.height, frameSize.width); } view.setDesignResolutionSize(1080, 1920, view.getResolutionPolicy()); } this._isSetResize = false; } //#endregion }