如何动态更改Canvas的尺寸

之前在2.X版本我是用designResolution这个可以动态更改的,3.0版本后用的是这个setContentSize,用这个改除了Canvas的都好使,就是Canvas的不变,大佬们3.0咋改Canvas的尺寸啊0.00.0

原先是这样//调整canvas大小适配屏幕
resize_screen() {
var cvs = cc.find(‘Canvas’).getComponent(cc.Canvas);
//保存原始设计分辨率,供屏幕大小变化时使用
if (!this._designResolution) {
this._designResolution = cvs.designResolution
}
var dr = this._designResolution;
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)) {
        finalH = dr.height;
        finalW = finalH * rw / rh;
    }
    else {
        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');
}

然后3.0改成了这样
/调整canvas大小适配屏幕
resize_screen() {
var cvs = find(‘Canvas’).getComponent(Canvas);
//保存原始设计分辨率,供屏幕大小变化时使用
if (!this._designResolution) {

        this._designResolution = cvs.getComponent(UITransform).contentSize
    }
    log(this._designResolution);
    var dr = this._designResolution;
    var s = view.getFrameSize();
    log("ssssss", s);
    var rw = s.width;
    var rh = s.height;
    var finalW = rw;
    var finalH = rh;

    if ((rw / rh) > (dr.width / dr.height)) {
        finalH = dr.height;
        finalW = finalH * rw / rh;
    }
    else {
        finalW = dr.width;
        finalH = rh / rw * finalW;
    }
    //cvs.getComponent(UITransform).contentSize = size(finalW, finalH);
    cvs.getComponent(UITransform).setContentSize(finalW, finalH)
    //cvs.node.getComponent(UITransform).width = finalW;
    //cvs.node.getComponent(UITransform).height = finalH;
    log(find('Canvas').getComponent(Canvas).getComponent(UITransform).contentSize);
    log(finalH, "===", finalW)
    cvs.node.emit('resize');
}

然后就不好使了

:sob:

:sob:

或者说怎样动态的更改项目的设计分辨率0.0

参考api:https://docs.cocos.com/creator/3.0/api/zh/classes/core.view-2.html#getviewportrect

谢谢大佬view.setDesignResolutionSize(Math.abs(finalW), Math.abs(finalH), 0); 解决了,不过这个方法的最后一个参数是啥0.0

最后一个参数文档(适配模式):https://docs.cocos.com/creator/3.0/api/zh/classes/core.resolutionpolicy-1.html

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。