微信小游戏苹果手机竖屏切换横屏适配问题

  • Creator 版本: 3.8

  • 目标平台:苹果11 微信小游戏

  • 重现方式:游戏项目设置的是竖屏720 1280,调用代码旋转小游戏屏幕并启动场景

        wx.setDeviceOrientation({
    
              value: "landscape",
    
              complete: (res) => {
    
                  director.loadScene("landscape-paint-ios")
    
              }
    
          });
    

屏幕横过来以后,只有最左边有一小部分展示竖屏,其余的屏幕都是黑色,重新设置分辨率以及屏幕方向以及fit_width都不管用

        console.log('设置横屏了')

        // view.setOrientation(macro.ORIENTATION_LANDSCAPE)

        // view.setDesignResolutionSize(framesize.width, framesize.height, ResolutionPolicy.FIXED_HEIGHT)
  • 首个报错:

  • 之前哪个版本是正常的: 安卓手机正常,苹果手机不行

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率: 100%

在需要横屏展示的场景的canvas中绑定了一个ts,在onload中重新设置分辨率、fit_width,setOrientation等都没有效果,请问有人遇到过并解决了吗

自顶一下 麻烦各位看一下

没人遇到过?就我自己卡着呢?

有官方的人吗。。。

1234567

解决了吗大兄弟

木有 直接放弃了

我也放弃;

这是因为ccc中针对微信小游戏转屏的功能没做
主要问题在引擎的
Resources/builtin/adapters/common/engine/globalAdapter/View.js
Resources/builtin/adapters/common/engine/InputManager.js
这两个文件中

如果是初始时竖屏游戏,可以跟我这个一样
如果是横屏游戏

切换横竖屏用微信的接口
wx.setDeviceOrientation

监听微信的横竖屏切换
wx.onDeviceOrientationChange
这个api中重置画布的尺寸,把原来画布的width换成height,height换成width

let canvasSize = cc.view.getCanvasSize();
let ratio = cc.view.getDevicePixelRatio();

cc.view?.changeCanvasSize(canvasSize.height / ratio, canvasSize.width / ratio);

最后,一定要转屏完成之后,也就是这个api: cc.view?.changeCanvasSize 调用完之后,去适配界面

1赞

最好的办法是在update中实时监听height width的变化,一有变化就发一个事件,所有需要重新适配的地方都响应然后处理,平台的事件都不太可靠,况且你这就只处理了微信,其他平台难道全部都要弄一遍吗?这样是一劳永逸

微信小游戏转屏后,游戏的width和height未发生变化
这样改了之后,width和height才会正常的发生变化