kunpolibrary/src/global/Adapter.ts

85 lines
2.7 KiB
TypeScript
Raw Normal View History

2025-02-20 11:27:28 +08:00
/**
* @Author: Gongxh
* @Date: 2024-12-07
* @Description:
*/
import { ResolutionPolicy, view } from "cc";
import { info } from "../tool/log";
import { WindowManager } from "../ui/WindowManager";
import { Screen } from "./Screen";
import { size } from "./header";
export abstract class Adapter {
public init() {
// 设计尺寸 不会变化
let designSize = this.getDesignSize();
Screen.DesignHeight = designSize.height;
Screen.DesignWidth = designSize.width;
view.setDesignResolutionSize(Screen.DesignWidth, Screen.DesignWidth, ResolutionPolicy.SHOW_ALL);
this.resize();
this.registerResizeCallback((...args: any) => {
info("屏幕发生变化", ...args);
this.resize();
});
}
protected resize(): void {
Screen.SafeAreaHeight = 60;
// 屏幕像素尺寸
const winSize = this.getScreenSize();
const isDesignLandscape = Screen.DesignWidth > Screen.DesignHeight;
const isLandscape = winSize.width > winSize.height;
if (isDesignLandscape == isLandscape) {
Screen.ScreenWidth = winSize.width;
Screen.ScreenHeight = winSize.height;
} else {
Screen.ScreenWidth = winSize.height;
Screen.ScreenHeight = winSize.width;
}
if (isDesignLandscape) {
// 横屏
/** 安全区的宽度 */
Screen.SafeWidth = Screen.ScreenWidth - Screen.SafeAreaHeight * 2;
/** 安全区的高度 */
Screen.SafeHeight = Screen.ScreenHeight;
} else {
// 竖屏
/** 安全区的宽度 */
Screen.SafeWidth = Screen.ScreenWidth;
/** 安全区的高度 */
Screen.SafeHeight = Screen.ScreenHeight - Screen.SafeAreaHeight * 2;
}
WindowManager._screenResize();
this.printScreen();
}
private printScreen() {
info(`设计分辨率: ${Screen.DesignWidth}x${Screen.DesignHeight}`);
info(`屏幕分辨率: ${Screen.ScreenWidth}x${Screen.ScreenHeight}`);
info(`安全区域高度: ${Screen.SafeAreaHeight}`);
info(`安全区宽高: ${Screen.SafeWidth}x${Screen.SafeHeight}`);
}
/**
*
* @abstract
* @returns {size}
*/
protected abstract getScreenSize(): size;
/**
*
* @abstract
* @returns {size}
*/
protected abstract getDesignSize(): size;
/**
*
* @abstract
* @param callback
*/
protected abstract registerResizeCallback(callback: () => void): void;
}