cocos creator开发pc端的浏览器适配问题

在PC端浏览器开发中,为了实现无黑边的全屏适配,通常需要针对不同窗口尺寸进行调整。文章介绍了Cocos Creator中主canvas的适配代码,通过监听窗口变化并设置合适的设计比例来确保界面比例。此外,还详细说明了全屏页面的适配步骤,包括预制体根节点的Widget设置、背景图填充以及全屏界面元素的位置保持。
摘要由CSDN通过智能技术生成

因为pc浏览器端不比手机端,手机分辨率除了ipad等特别的,一般只需要把背景图拉宽或者拉高一些,就能保证不留黑边,pc端浏览器可以随便拉,但是一般为了效果,浏览器界面再拉也不允许留黑边的,可以试试其他网站拉伸(基本都是没黑边),只是窗口到一定程度后,界面保持原比例,不再缩放

主canvas的适配代码,监听浏览器窗口变化,设置canvas的适配 设计比例1920*1080

onLoad() {
        this.updateSizeFit();
        let _this = this;
        // 监听浏览器窗口大小变化
        cc.view.setResizeCallback(function () {
            _this.updateSizeFit();
            // rect.left, rect.top, rect.width, rect.height (像素值)
        });
    }   
    // 根据浏览器窗口变化适配
    updateSizeFit() {
        var rect = cc.game.canvas.getBoundingClientRect();
        let rateWidth = Math.round(rect.width / 1920 * 100) / 100;
        let rateHeight = Math.round(rect.height / 1080 * 100) / 100;
        console.log("屏幕发生变化", rateWidth, rateHeight)
         // 这里0.2是高度和1080,宽度和1920的比例 差距较大,就是和原始设计比例相比,太高或太宽了,就不做适配了,窗口变化,界面始终不缩放,维持锚点在窗口内,锚点外的就被窗口边缘覆盖了
        if (Math.abs(rateWidth - rateHeight) > 0.2 || rateWidth == rateHeight) {// 宽高差距太大或者宽高比=,不做适配
            cc.Canvas.instance.fitHeight = false;
            cc.Canvas.instance.fitWidth = false;
            UIModalMgr.inst.updateMaskView();// 更新popUI mask大小
            EventCenter.emit(EventCenterNameEnum.ScreenChange);
            return;
        }
        if (rateWidth < rateHeight) {
            cc.Canvas.instance.fitHeight = false;
            cc.Canvas.instance.fitWidth = true;// 以宽来适配
        }
        else if (rateHeight < rateWidth) {
            cc.Canvas.instance.fitHeight = true; // 以高来适配
            cc.Canvas.instance.fitWidth = false;
        }
    }

其他全屏页面的适配

1,全屏页面预制体中预制体根结点添加widget,代码中选中左右上下,目标设置为canvas,此代码在界面初始化调用一次就行了

     widget.right = 0;

                widget.left = 0;

                widget.top = 0;

                widget.bottom = 0;

                widget.isAlignLeft = true;

                widget.isAlignRight = true;

                widget.isAlignBottom = true;

                widget.isAlignTop = true;

widget.target = cc.find("Canvas");

        widget.updateAlignment();

2,预制体的背景图bg也同样添加widget,同1设置,target以预制体的根结点就可以,这样始终可以充满整个屏幕

 3,全屏预制体上其他的按钮之类的,只要不是居中显示,一般都需要加widget,做相对位置,在窗口变化的时候,来保持元素位置偏移不那么大,widget的target是预制体根结点,或者本元素的父节点

比如我全屏界面<关闭按钮>在左上脚,widget以预制体根结点,这样可以保持关闭按钮一直在左上角,适配窗口比较好

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值