squidGame/tgx-games-client/assets/core_tgx/base/ResolutionAutoFit.ts

44 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-02-17 21:36:37 +08:00
import { _decorator, Component, view, screen, Size, size, ResolutionPolicy } from 'cc';
const { ccclass, property } = _decorator;
const CHECK_INTERVAL = 0.1;
@ccclass('tgxResolutionAutoFit')
export class ResolutionAutoFit extends Component {
private _oldSize:Size = size();
start() {
this.adjustResolutionPolicy();
}
private lastCheckTime = 0;
update(deltaTime: number) {
this.lastCheckTime+=deltaTime;
if(this.lastCheckTime < CHECK_INTERVAL){
return;
}
this.lastCheckTime = 0;
this.adjustResolutionPolicy();
}
adjustResolutionPolicy(){
let winSize = screen.windowSize;
if(!this._oldSize.equals(winSize)){
let ratio = winSize.width / winSize.height;
let drs = view.getDesignResolutionSize();
let drsRatio = drs.width / drs.height;
if(ratio > drsRatio){
//wider than desgin. fixed height
view.setResolutionPolicy(ResolutionPolicy.FIXED_HEIGHT);
}
else{
//
view.setResolutionPolicy(ResolutionPolicy.FIXED_WIDTH);
}
this._oldSize.set(winSize);
}
}
}