mirror of
https://github.com/Gongxh0901/kunpolibrary
synced 2025-04-20 02:18:41 +00:00
85 lines
2.7 KiB
TypeScript
85 lines
2.7 KiB
TypeScript
/**
|
|
* @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;
|
|
} |