web手机端横竖屏切换问题

@zzf_2025 大佬看一下呀

简单 hack 的方法试试这样:

感谢回复,在谷歌浏览器上可以,但是在oppo手机自带的欢太浏览器上不行

还有其他手机有问题吗?

只在自己手机上测试了

       window.dispatchEvent(new Event('resize'))

手动调用下这个代码试试,记得判断平台,之前那种修改可以去掉,

没用…
主要是windowSize被return了.

亲 你有遇到切竖屏后方向不对吗?

切竖屏后方向 不对是怎么回事

开启手机自动旋转,游戏切竖屏后方向就不对

3.7.1使用这个 cocos-awesome-tech-solutions/demo/ Creator3.4.0_2D_ScreenSwitch /会报错

Setting window size is not supported

所以有解吗

我目前的项目是纯 web 用你这个方法是可以的, 这是我的搞法

兄弟有解决吗

有解吗,我也碰到了

努力了两天,找到了一个临时的解决方案。

我是cocos creator 3.8.1的,在ExecutorContext的resize方法里添加this.devicePasses.clear();就能解决我碰到的问题。

加一句,我导出的web-mobile,用户手机开启屏幕自动旋转时,网页就会触发resize方法。没时间更生深入了,盲猜更具体的bug在DeviceRenderPass.resetResource方法中。希望能帮到其他碰到类似问题的小伙伴,有更好的解决方案也麻烦告知我下。

我也遇到类似的问题了,用的版本和导出模式和你一样,请问下ExecutorContext的resize方法里添加this.devicePasses.clear(); 这个怎么添加?谢谢

import * as cc from "cc";
import {_decorator, Component} from "cc";

const {ccclass, property} = _decorator;

@ccclass("FixCocos")
export class FixCocos extends Component {

update(deltaTime: number) {
    if(!this._fixed){
        try {
            let root = cc.director.root as any;
            if(root){
                let ExecutorContext = root["_pipeline"]["_executor"]["_context"];
                let rawRootResize = root.resize.bind(root);
                root.resize = (width:number, height:number)=>{
                    rawRootResize(width, height);

                    root["__handleResize"] = false;
                }
                let rawExecutorContextResize = ExecutorContext.resize.bind(ExecutorContext);
                ExecutorContext.resize = (width:number, height:number)=>{
                    if(root["__handleResize"] == false){
                        root["__handleResize"] = true;
                        ExecutorContext.devicePasses.clear();
                    }
                    rawExecutorContextResize(width, height);
                }
                this._fixed = true;
            }
        } catch (e: any) {

        }
    }
}

private _fixed = false;
}

挂在启动脚本就行

你这个方案会导致slider和scrollview无法正常工作