12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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);
- }
- }
- }
|