You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
49 lines
1.4 KiB
const { ccclass, property } = cc._decorator;
|
|
|
|
@ccclass
|
|
export default class Adapt extends cc.Component {
|
|
@property()
|
|
isByChange = true;
|
|
onLoad() {
|
|
if (this.isByChange) {
|
|
cc.view.setResizeCallback(() => this.resize())
|
|
}
|
|
this.resize();
|
|
}
|
|
|
|
public curDR: cc.Size;
|
|
public resize() {
|
|
|
|
var cvs = cc.find('Canvas').getComponent(cc.Canvas);
|
|
//保存原始设计分辨率,供屏幕大小变化时使用
|
|
// if (!this.curDR) {
|
|
this.curDR = cvs.designResolution;
|
|
// }
|
|
var dr = this.curDR;
|
|
var s = cc.view.getFrameSize();
|
|
var rw = s.width;
|
|
var rh = s.height;
|
|
var finalW = rw;
|
|
var finalH = rh;
|
|
|
|
if ((rw / rh) > (dr.width / dr.height)) {
|
|
//!#zh: 是否优先将设计分辨率高度撑满视图高度。 */
|
|
//cvs.fitHeight = true;
|
|
|
|
//如果更长,则用定高
|
|
finalH = dr.height;
|
|
finalW = finalH * rw / rh;
|
|
}
|
|
else {
|
|
/*!#zh: 是否优先将设计分辨率宽度撑满视图宽度。 */
|
|
//cvs.fitWidth = true;
|
|
//如果更短,则用定宽
|
|
finalW = dr.width;
|
|
finalH = rh / rw * finalW;
|
|
}
|
|
cvs.designResolution = cc.size(finalW, finalH);
|
|
cvs.node.width = finalW;
|
|
cvs.node.height = finalH;
|
|
cvs.node.emit('resize');
|
|
}
|
|
} |