2024-05-08 04:03:33 -07:00
|
|
|
import { sys } from 'cc';
|
|
|
|
import { view, ResolutionPolicy, log } from 'cc';
|
|
|
|
import { _decorator, Component, Node } from 'cc';
|
|
|
|
import * as cc from 'cc';
|
|
|
|
import { UmLog } from './UmLog';
|
|
|
|
import { UmClientEvent } from './UmOneToMultiListener';
|
|
|
|
import { UmConfig } from './UmConfig';
|
|
|
|
const { ccclass, property } = _decorator;
|
|
|
|
|
|
|
|
@ccclass('UmCanvasResize')
|
|
|
|
export class UmCanvasResize extends Component {
|
|
|
|
public static startFit: number = ResolutionPolicy.SHOW_ALL;
|
|
|
|
public static currentFit: number = ResolutionPolicy.FIXED_WIDTH;
|
|
|
|
|
|
|
|
onLoad() {
|
|
|
|
if (UmCanvasResize.isListenerCanvasResize()) {// && !document.getElementById('GameDiv')
|
|
|
|
window.addEventListener('resize', this._onEventCanvasResized);
|
|
|
|
UmCanvasResize.currentFit = Number(view.getResolutionPolicy);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
onDestroy() {
|
|
|
|
UmCanvasResize.resetFitCanvasSize();
|
|
|
|
}
|
|
|
|
|
|
|
|
_onEventCanvasResized() {
|
|
|
|
UmLog.log("[Canvas] => _onEventCanvasResized");
|
|
|
|
UmCanvasResize.updateFitCanvasSize();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static isListenerCanvasResize(): boolean {
|
|
|
|
if (sys.isBrowser) {
|
|
|
|
if (sys.isMobile) return true;
|
|
|
|
|
2024-05-12 20:54:17 -07:00
|
|
|
if (UmConfig.isModeLogDebug) {
|
2024-05-08 04:03:33 -07:00
|
|
|
let url = window.location.href;
|
|
|
|
if (url?.length > 0 && url.includes("http://localhost:")) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static updateFitCanvasSize() {
|
|
|
|
const viewSize = cc.screen.windowSize;
|
|
|
|
const designSize = view.getDesignResolutionSize();
|
|
|
|
let windowWidth = viewSize.width;
|
|
|
|
let windowHeight = viewSize.height;
|
|
|
|
let windowRatio = windowWidth * 1.0 / windowHeight;
|
|
|
|
const designRatio = designSize.width * 1.0 / designSize.height;
|
|
|
|
let height = designSize.height;
|
|
|
|
if (windowRatio <= designRatio) {
|
|
|
|
height = designSize.width / viewSize.width * viewSize.height;
|
|
|
|
UmCanvasResize.currentFit = ResolutionPolicy.FIXED_WIDTH;
|
|
|
|
log("[Canvas] => updateFitCanvasSize ==> ", designSize.width, height, " ==> FIT_WIDTH");
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
UmCanvasResize.currentFit = ResolutionPolicy.SHOW_ALL
|
|
|
|
log("[Canvas] => updateFitCanvasSize ==> ", designSize.width, height, " ==> FIT_SHOW_ALL");
|
|
|
|
}
|
|
|
|
view.setResolutionPolicy(UmCanvasResize.currentFit);
|
|
|
|
UmClientEvent.dispatchEvent("canvas-resize");
|
|
|
|
}
|
|
|
|
|
|
|
|
public static updateCurrentFitCanvasSize() {
|
|
|
|
log("[Canvas] => updateCurrentFitCanvasSize");
|
|
|
|
view.setResolutionPolicy(UmCanvasResize.currentFit);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static resetFitCanvasSize() {
|
|
|
|
if (UmCanvasResize.isListenerCanvasResize()) {
|
|
|
|
view.setResolutionPolicy(UmCanvasResize.startFit);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|